Поиск всех больших файлов в корневой файловой системе

124

У меня есть сервер Linux, который в настоящее время использует меньше места:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

Как вы видете. /на 78%. Я хочу проверить, какие файлы или папки занимают место.

Я попробовал это:

find . -type d -size +100M

Который показывает результат, как это:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

Теперь это моя проблема. Мне нужны только имена тех файлов, которые находятся в папках, которые занимают место в, /а не в /u01или /home. Поскольку /это основа всего, он показывает мне каждый файл моего сервера.

Можно ли получить большие файлы, которые способствуют 78% /?

Абхишек дот пи
источник
3
Смотрите -xdevпредикат поиска. Смотрите также du -kx / | xdu(или xdiskusage).
Стефан Шазелас
Смотрите также мой ответ на связанный вопрос .
Джофель
1
релевантныйfind . -type f -print | xargs du -sk | sort -rn
user13107
Связанный: stackoverflow.com/questions/12522269/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

217

Пытаться:

find / -xdev -type f -size +100M

В нем перечислены все файлы размером более 100M.

Если вы хотите узнать о каталоге, вы можете попробовать ncdu.

Если вы не используете Linux, вам может потребоваться использовать -size +204800или -size +104857600c, поскольку Mсуффикс означает мегабайт, отсутствует в POSIX.

find / -xdev -type f -size +102400000c
cuonglm
источник
1
-xdevпросто предотвращает поиск по файловым системам, поэтому вы будете искать только свой текущий физический диск. Если это не то, что вы хотите, просто удалите -xdevаргумент.
варенье
49

В дополнение к ответу @Gnouc, вы также можете добавить, ls -laчтобы получить более подробную информацию. Вы должны sudo privilegesсделать это.

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Чтобы увидеть только файлы в гигабайте, выполните:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2
зет
источник
44

Следующая команда не только найдет вам 50 самых больших файлов (> 100M) в вашей файловой системе, но и отсортирует (GNU sort) по самым большим:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev Не спускайте каталоги на другие файловые системы.

На BSD findиспользование, -xкоторое эквивалентно устаревшему -xdevпервичному.

Для всех файлов и каталогов это еще проще:

du -ahx / | sort -rh | head -20

( -xфлаг - это то, что требуется для ограничения duодной файловой системой)

Если вы не используете GNU sort(from coreutils), используйте его без -h:

du -ax / | sort -rn | head -20

Только для текущего каталога (для более быстрых результатов) замените /на ..

kenorb
источник
1
Я хотел бы отметить, что этот метод хорош, потому что -hпоказывает удобочитаемый вывод, и добавить пример вывода.
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
Очень хорошее решение Спасибо.
Тигин