سؤال ما هي طريقة سطر الأوامر للعثور على ملفات / أدلة كبيرة لإزالة ومساحة خالية؟


أبحث عن سلسلة من الأوامر التي ستعرض لي أكبر الملفات على محرك الأقراص.


158
2018-04-20 14:01


الأصل


هل من الممكن أن يكون هناك شيء رسومية؟ - RolandiXor♦
كلا ، تعمل على سطر الأوامر على ssh. - Ryan Detzel
ما هو غريب لدي مخدمين تعمل على نفس الشيء. واحد هو استخدام القرص 50 ٪ والآخر هو 99 ٪. لا أستطيع أن أجد ما يسبب هذا. - Ryan Detzel
لذلك أنا مرتبك ، وتقول 98 ٪ تستخدم مع دو ولكن عندما أقوم بتشغيل التطبيق gt5 أحصل على: grab.by/9Vv2 - Ryan Detzel


الأجوبة:


إذا كنت بحاجة فقط للعثور على ملفات كبيرة ، يمكنك استخدامها find مع ال -size اختيار. يقوم الأمر التالي بإدراج جميع الملفات التي يزيد حجمها عن 10MiB (لا ينبغي الخلط مع 10MB):

find / -size +10M -ls

إذا كنت تريد العثور على ملفات بين حجم معين ، فيمكنك دمجها مع "حجم أقل من" البحث. يجد الأمر التالي الملفات بين 10MiB و 12MiB:

find / -size +10M -size -12M -ls

apt-cache search 'disk usage' يسرد بعض البرامج المتاحة لتحليل استخدام القرص. أحد التطبيقات التي تبدو واعدة جدا gt5.

من وصف الحزمة:

لقد مرت السنوات وأصبحت الأقراص أكبر وأكبر ، ولكن حتى في هذا العصر الضخم من القرص الصلب ، يبدو أن الفضاء يختفي مع مرور الوقت. توفر هذه البرامج الصغيرة والفعالة قائمة أكثر ملاءمة من du الافتراضي (1). يعرض ما حدث منذ آخر تشغيل ويعرض حجم dir والنسبة المئوية الإجمالية. من الممكن التنقل والصعود إلى الدلائل باستخدام مفاتيح المؤشر مع متصفح يعتمد على النص (روابط ، إلينكس ، الوشق إلخ.)

Screenshot of gt5

في قسم "الحزم ذات الصلة" من GT5، وجدت ncdu. من وصف الحزمة الخاصة به:

Ncdu هو عارض du يقوم على ncurses. فهو يوفر واجهة سريعة وسهلة الاستخدام من خلال أداة du المشهورة. انها تسمح لتصفح من خلال الدلائل ونظهر النسب المئوية لاستخدام القرص مع مكتبة ncurses.

Screenshot of ncdu


223
2018-04-20 14:16



ncdu سريع جدا وفقط ما احتاجه ، شكرا! لقد جربت gt5 أيضًا ، لكنني ألغيت ذلك لأنه كان "يفكر" طويلاً بدون أي تعليقات - Lukas
حماقة المقدسة ، ncdu هو مدهش ، شكرا لتقاسم النتائج الخاصة بك! - While-E
أنا أحب إذا ncdu أشير أقوى. أحتاجها من حين لآخر ولا أتذكر الاسم. - Martin Thoma


أنا مجرد استخدام مزيج من du و sort.

sudo du -sx /* 2>/dev/null | sort -n

0   /cdrom
0   /initrd.img
0   /lib64
0   /proc
0   /sys
0   /vmlinuz
4   /lost+found
4   /mnt
4   /nonexistent
4   /selinux
8   /export
36  /media
56  /scratchbox
200 /srv
804 /dev
4884    /root
8052    /bin
8600    /tmp
9136    /sbin
11888   /lib32
23100   /etc
66480   /boot
501072  /web
514516  /lib
984492  /opt
3503984 /var
7956192 /usr
74235656    /home

ثم انها حالة اشطف و كرر. استهدف الأدلة الفرعية التي تعتقد أنها كبيرة جدًا ، وشغِّل الأمر لهم واكتشف سبب المشكلة.

ملاحظة: أنا استخدم duالصورة -x علم للحفاظ على الأشياء محدودة لنظام ملفات واحد (لدي ترتيب معقد جدًا للأشياء المتقاطعة بين SSD و RAID5).

ملاحظة 2: 2>/dev/null يعيد توجيه أي رسائل خطأ في غياهب النسيان. إذا لم يزعجك ، فهو ليس واجباً.


29
2018-04-20 14:30



عندما أقوم بتشغيل هذا الأمر ، ينزل دو إلى أدلة الأطفال. من du man page: "تلخيص استخدام القرص لكل FILE ، بشكل متكرر للدلائل." - Jamie


يستخدم الحل المفضل لدي مزيجًا من العديد من هذه الإجابات الجيدة.

du -aBM 2>/dev/null | sort -nr | head -n 50 | more

du الحجج:

  • -a عن "جميع" الملفات والدلائل. اتركه قبالة الدلائل فقط
  • -BM لإخراج الأحجام بأحجام كتلة ميجابايت (M) (B)
  • 2>/dev/null - استبعاد رسائل الخطأ "تم رفض الإذن" (شكرًاOli)

sort الحجج:

  • -n من أجل "رقمي"
  • -r لـ "العكسي" (من الأكبر إلى الأصغر)

head الحجج:

  • -n 50 لأعلى 50 نتيجة فقط.
  • غادر more إذا كنت تستخدم عددًا أصغر

ملاحظة: البادئة مع sudo لتضمين الأدلة التي ليس لدى حسابك إذن الوصول إليها.

مثال يوضح أهم 10 ملفات وأدلة في / var (بما في ذلك الإجمالي الكلي).

cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M   .
6794M   ./lib
5902M   ./lib/mysql
3987M   ./lib/mysql/my_database_dir
1825M   ./lib/mysql/my_database_dir/a_big_table.ibd
997M    ./lib/mysql/my_database_dir/another_big_table.ibd
657M    ./log
629M    ./log/apache2
587M    ./log/apache2/ssl_access.log
273M    ./cache

16
2017-07-03 23:24



أحبها ، شكرا - electblake


إجابة qbi صحيحة ولكنها ستكون بطيئة جدًا عندما يكون هناك الكثير من الملفات لأنها ستبدأ عملية ls جديدة لكل عنصر.

سيكون إصدار أسرع بكثير باستخدام البحث دون إنشاء عمليات فرعية لاستخدام printf لطباعة الحجم بالبايت (٪ s) والمسار (٪ p)

find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries


8
2017-11-16 12:55



تأكد من أن هذا أسرع - Cookie


لعرض أكبر 20 من الدلائل الأعلى (بشكل متكرر) في المجلد الحالي ، استخدم الخط الواحد التالي:

du -ah . | sort -rh | head -20

أو (أكثر توجها يونكس):

du -a . | sort -rn | head -20

لأعلى 20 ملفًا في الدليل الحالي (بشكل متكرر):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

أو بأحجام بشرية يمكن قراءتها:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

يرجى ملاحظة ذلك -h متاح ل GNU sort فقط ، لجعله يعمل على OSX / BSD بشكل صحيح ، عليك تثبيته من coreutils. ثم قم بإضافة مجلدها إلى حسابك PATH.

حتى هذه الأسماء المستعارة هي مفيدة في حياتك الصليب الأحمر الملفات (في كل مرة عندما تحتاجها):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

7
2018-03-05 14:17





هذا يبدو وكأنه التطبيق الأمثل ل find:

find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5

سيجد هذا الأمر جميع الملفات في الدليل $DIRECTORY وتنفيذها ls -s عليهم. يطبع الأمر الأخير الحجم المخصص لملف بالإضافة إلى اسم الملف. يتم فرز النتيجة عدديًا وتظهر آخر خمس إدخالات. ونتيجة لذلك سترى أكبر 5 ملفات في $DIRETORY أو أي دليل فرعي. إذا قمت بإدخال tail -n 1 سترى فقط أكبر ملف.

علاوة على ذلك ، يمكنك اللعب كثيرًا معه find. على سبيل المثال ، يمكنك البحث عن الملفات الأصغر من ن أيام (-ctime -n) أو التي تنتمي إلى مستخدمين خاصين (-user johndoe).


6
2018-04-20 14:26





عندما أحتاج إلى توفير مساحة إضافية على الخوادم ، استخدم هذا الأمر. العثور على جميع الملفات أكبر ثم 50 ميغابايت و "دو -h" جعل قائمة أفضل من الملفات و "نوع الفرز" بعد جعل الأنابيب فرز قائمة رقمية حسب حجم الملف.

find / -size +50M -type f -exec du -h {} \; | sort -n

2
2017-10-11 20:40





جرِّب Baobab ، فهو يعطيك نظرة عامة على الملفات والمجلدات ، ويمكنك معرفة مكان الخنازير الحقيقية وحذفها بنقرة واحدة https://help.ubuntu.com/community/Baobab


1
2018-01-29 11:47



في هذا السؤال بالتحديد ، يفضل البروتوكول OP طريقة سطر الأوامر. انظر التعليقات على السؤال. سأعدّل السؤال أيضًا.


للعثور على جميع ملفات GB على سبيل المثال ، يمكنني استخدام du و grep ، على الرغم من أن الطرق الأخرى المذكورة هنا تبدو رائعة أيضًا.

du -h -a /dir | grep "[0-9]G\b"  

يمكنك أيضًا أن تتوهم مع خيار -except الذي تمتلكه du.


1
2018-06-11 19:04





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

find . -type f -exec du -h {} \; | sort -k1 -h

يجد فقط الملفات وينفذ du -h لكل ملف ، مما يدل على حجم الملف. وأخيرا ، نفرز الناتج find/du وفقا للعمود الأول (في شكل مقروء بشري).

آخر ملف مطبوع هو الأكبر.


0
2017-09-08 12:28