سؤال كيفية الحصول على أحجام ملخصة من الدلائل ودلائلها الفرعية؟


لنفترض أنني أريد الحصول على حجم كل دليل لنظام ملفات Linux. عندما أستخدم ls -la لا أحصل حقاً على حجم ملخّص للمجلدات.

إذا كنت تستخدم df أحصل على حجم كل نظام ملفات مثبت ولكن هذا أيضا لا يساعدني. ومع du أحصل على حجم كل دليل فرعي وملخص لنظام الملفات بأكمله.

لكنني أرغب في الحصول فقط على حجم ملخّص لكل مجلد داخل مجلد ROOT في نظام الملفات. هل هناك أي أمر لتحقيق ذلك؟


266
2017-07-11 17:26


الأصل


ال --total العلم كان مفيدا بالنسبة لي. مثلا du -sh --total applications/*. askubuntu.com/a/465436/48214 - Ryan


الأجوبة:


هذا يفعل ما كنت تبحث عنه:

du -sh /*

ماذا يعني هذا:

  • -s لإعطاء المجموع فقط لكل وسيطة سطر الأوامر.
  • -h لواحق قابلة للقراءة الإنسان مثل M للميغابايت و G للغيغابايت (اختياري).
  • /* ببساطة يتوسع إلى جميع الدلائل (والملفات) في /.

    ملاحظة: لم يتم تضمين dotfiles ؛ يركض shopt -s dotglob لتشمل تلك أيضا.

من المفيد أيضًا الفرز حسب الحجم:

du -sh /* | sort -h

هنا:

  • -h لتأكيد sort يفسر لاحقات الإنسان للقراءة بشكل صحيح.

374
2017-07-11 17:28



إذا كان لديك دلائل نقطية في الدليل الجذر ، فيمكنك استخدامه shopt -s dotglob لتشملهم في العد. - Philipp
إنه مفيد جدًا ، لأنه بسيط ويمكنك وضع المسار الذي تريده بدلاً من /*على سبيل المثال ./ للدليل الحالي أو ./* لكل عنصر في الدليل الحالي. - psur
psur أو يمكنك استخدامها ./*/ للحصول على المجلدات الفرعية فقط وليس كافة العناصر - relascope
نسخة مصنفة: du -sh /* | sort -h - Vu Anh
@ c1phr إذا كان لديك sort ليس لديه -h، تحتاج إلى تركها من du كذلك ، وإلا فإن الفرز يخلط كيلو / ميجا / غيغابايت. du -s /* | sort -nr. - Thomas


غالباً ما أحتاج إلى العثور على أكبر الدلائل ، لذا للحصول على قائمة مرتبة تحتوي على أكبر 20 تطبيقًا ، أقوم بذلك:

du -m /some/path | sort -nr | head -n 20

في هذه الحالة ، سيتم الإبلاغ عن الأحجام بالميغابايت.


71
2017-07-29 12:07



وإليك طريقة للحصول عليه أكثر قابلية للقراءة / بعض / مسار / | sort -hr | head -n 20 - Xedecimal
@ xedecima مشكلة استخدام h هي أن النوع لا يعرف كيفية التعامل مع الأحجام المختلفة. على سبيل المثال ، يتم فرز 268K أعلى من 255M ، ويتم تصنيف كلاهما أعلى من 2.7G - chrisan
يجب أن قراءة الوسيطة - h (قابل للقراءة البشرية) على الأمر 'الفرز' هذه القيم بشكل صحيح. تماما مثل دو-ح العلم تصديرهم. اعتمادا على ما كنت تعمل أنا تخمين. - Xedecimal
يعمل في أوبونتو 16.04. نصيحة لطيفة. - SDsolar
sudo du -haxt 1G / | sort -hr | الرأس -30 - deviant


أنا أحب أن استخدم Ncdu لذلك ، يمكنك استخدام المؤشر للتنقل والتنقيب لأسفل من خلال بنية الدليل أنه يعمل بشكل جيد.


15
2017-12-24 10:07





الإجابات الحالية مفيدة للغاية ، وربما يجد بعض المبتدئين (مثلي) هذا مفيدًا أيضًا.

  1. حلقة أساسية جدًا ، ولكن بالنسبة لي كانت هذه بداية جيدة لبعض العمليات الأخرى ذات الصلة بالحجم:

    for each in $(ls) ; do du -hs "$each" ; done
    
  2. تشبه إلى حد كبير الإجابة الأولى وتقريبا نفس النتيجة مثل 1.) ، ولكن استغرق الأمر بعض الوقت لفهم الفرق من * إلى. / * إذا كان في دليل فرعي:

    du -sh ./*
    

9
2017-11-22 16:53





ما يلي du يجب أن يعمل الاحتجاج على أنظمة BSD:

du -d 1 /

6
2017-07-11 17:29



لي du (أوبونتو 10.4) لا يملك -d اختيار. ما هو نظامك؟ - Thomas
على بلدي أوبن سوزي لا يحتوي على خيار -d إما :( - 2ndkauboy
حسنًا ، إنه خيار BSD فقط (أنا على OS X). - Philipp
الخيار الصحيح الخيار المحمول على BSD / * NIX هو du -sk /*. أنا أكره -k الاشياء soooo بكثير. لينكس " -h الصخور تماما. - Dummy00001
في أنظمة أخرى --max-depth - Vishnu Kumar


هذا ليس سهل ال du الأمر إما يعرض الملفات والمجلدات (افتراضي) أو فقط أحجام جميع العناصر التي تحددها في سطر الأوامر (الخيار -s).

للحصول على أكبر العناصر (الملفات والمجلدات) ، تم فرزها ، بأحجام بشرية يمكن قراءتها على نظام التشغيل Linux:

du -h | sort -h

هذا سوف يدفن في نصف طن من الملفات الصغيرة. يمكنك التخلص منهم --threshold (1 ميغابايت في المثال الخاص بي):

du --threshold=1M -h | sort -h

ميزة هذا الأمر هو أنه يتضمن مجلدات خفية (المجلدات التي تبدأ بـ .).

إذا كنت تريد حقا فقط المجلدات ، تحتاج إلى استخدام find لكن هذا يمكن أن يكون بطيئًا جدًا منذ ذلك الحين du سيضطر إلى فحص العديد من المجلدات عدة مرات:

find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h

3
2017-07-24 11:04



- عتبة ^ ^ ^ هذا الخيار غير متوفر على linux - podarok
podarok إنه متوفر على OpenSUSE 13.2 Linux. حاول العثور على إصدار أحدث من توزيعك أو قم بتجميع نسخة أحدث من الحزمة بنفسك. - Aaron Digulla
لا تعمل على Ubuntu LTS (14.04). هذا هو أحدث واحد)) - podarok
@ podarok أي إصدار من نواة غنو؟ المنجم هو 8.24. - Aaron Digulla
ربما يكون التخزين المؤقت مصطلحًا سيئًا. كنت أفكر في شيء من هذا القبيل القيام به في هذا الميناء superuser.com/a/597173/121352 حيث نقوم بفحص محتويات الأقراص مرة واحدة في التعيين ثم نتابع استخدام البيانات من هذا التعيين بدلاً من ضرب القرص مرة أخرى. - Hennes


كن على علم ، أنه لا يمكنك مقارنة الأدلة مع du على الأنظمة / الأجهزة المختلفة دون التأكد من ذلك ، يتشارك كلاهما في نفس نظام ملفات الفيديو. قد يحسب ذلك إذا قمت ب rsync بعض الملفات من جهاز linux إلى nas وتريد مقارنة الدليل المتزامن بنفسك. قد تحصل على نتائج مختلفة مع du بسبب كتل مختلفة ....


1
2017-10-05 15:36





قد ترغب أيضا في التحقق من xdiskusage. سوف يعطيك نفس المعلومات ، ولكن كما هو موضح بيانيا ، بالإضافة إلى يسمح للتنقيب (مفيدة للغاية). هناك أدوات مساعدة مماثلة أخرى لـ KDE وحتى Windows.


0
2017-07-12 19:42