Пошук файлів, які використовують найбільше місця на диску


43

Чи можливо перерахувати найбільші файли на моєму жорсткому диску? Я часто використовую df -Hдля відображення використання мого диска, але це дає лише відсоток, заповнений, залишилися ГБ тощо

Я роблю безліч об'ємних обчислень, з великою кількістю невеликих файлів і дуже малою кількістю дуже великих файлів. Оскільки більша частина мого дискового простору міститься у дуже невеликій кількості файлів, то складно знайти, де знаходяться ці великі файли. Видалення файлу розміром 1 кб не звільняє багато місця, але видалення файлу об'ємом 100 ГБ робить. Чи є можливість сортувати файли на жорсткому диску за розміром?

Дякую.


Про 'тду' ​​див. Також: unix.stackexchange.com/questions/425615/…
Йосиф Павло

Відповіді:


47

За допомогою стандартних доступних інструментів:

Щоб перерахувати топ 10 найбільших файлів із поточного каталогу: du . | sort -nr | head -n10

Щоб перерахувати найбільші каталоги з поточного каталогу: du -s * | sort -nr | head -n10

ОНОВЛЕННЯ У ці дні я зазвичай використовую більш читану форму (як пояснює Джей Чакра в іншій відповіді, і відключаю | head -n10, просто нехай вона прокручується з екрана. В останньому рядку є найбільший файл або каталог (дерево).

Іноді, напр. коли у поточному каталозі у вас є багато точок монтування, замість того, щоб використовувати -xчи декілька --exclude=PATTERN, зручніше монтувати файлову систему у невикористаній точці монтажу ( часто /mnt ) та працювати з неї.

Зауважте, що при роботі з великими (NFS) томами ви можете спричинити значне навантаження на резервний сервер (файловий файл) під час роботи duнад великою кількістю (під) каталогів. У цьому випадку краще врахувати налаштування quotaгучності.


3
Для вашого першого варіанту ви не можете просто перерахувати їх ls -Sl | head?
Бернхард

Ні, duпроходить все дерево каталогів, тоді як ls -S перевіряє лише поточний каталог.
джиппі

35

Додавання до відповіді джиппі

Щоб перелічити найбільші каталоги з поточного каталогу у читаному для людини форматі:

du -sh * | sort -hr | head -n10

Зразок:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

Це робить зручніше читати :)


14

Спробуйте ncdu, як це може дати вам огляд використання диска. З його веб-сайту:

Аналізатор використання диска з інтерфейсом ncurses, призначений для запуску на віддаленому сервері, де ви не маєте цілих гафічних налаштувань, але це стосується простого SSH-з'єднання. ncdu має на меті бути швидким, простим і простим у використанні, і він повинен мати можливість працювати в будь-якому мінімальному POSIX-середовищі із встановленими ncurses.


3

(гну)

du -max /dir | sort -nБудуть відображені великі файли, а також великі каталоги, які можна використовувати, щоб визначити, де потрібно зробити чистку.

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(Я знаю, що це досить старе дерево: p)


2

Існує простий і ефективний спосіб знайти розмір кожного файлу і каталогу в Ubuntu:

Застосування> Аксесуари> Аналізатор використання диска

у цьому вікні натисніть кнопку "Сканувати файлову систему" на панелі інструментів. через короткий час (секунди) ви користуєтесь диском кожного каталогу та файлу.



0

Ви можете спробувати з цією командою, вона перелічить усі файли розміром більше 20 Мбіт.

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2

3
Якщо найбільший файл у вашій файловій системі становить 20 МБ, ви, ймовірно, не матимете мало місця на диску. Принаймні, з будь-якою HD-силою цього тисячоліття
Кевін

Це лише приклад, ви поміщаєте туди все, що завгодно. Тут ви знайдете все, що перевищує 20 МБ, не лише 20 МБ файлів.
пацеб

ls -lhто sort?? ls -sабо stat -c %b, мабуть, кращі.
Мікель

Я не розумію. У моєму прикладі використовується ls та сортування. Він хотів знайти файли на цілому диску, а не в каталозі.
пацеб

0

введіть наступну команду

cd /

потім введіть

дю -ш * | греп Г

вище команда покаже вам, скільки пам'яті використовується в якому каталозі. після цього ви повинні вирішити, який каталог або файл ви хочете видалити


-2

Ви можете спробувати з цією командою, вона перелічить великий файл:

ls -lrS | tail -1

показує поточний каталог, а не весь жорсткий диск.
slm

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.