Ищу скрипт / программу, которая отобразит верхнюю Икс самые большие каталоги / файлы, а затем спуститесь в эти папки и отобразите Икс самые большие каталоги / файлы для настраиваемой глубины.
231MB bin
- 220MB ls
- 190MB dir
- 15MB def
- 3MB lpr
- 10MB asd
- 1MB link
Как я могу это сделать?
Вы можете увидеть 10 крупнейших каталогов с:
du -cks *|sort -rn|head
Это рекурсивно суммирует размеры всего в каждом каталоге, но вам придется вручную выполнять его на каждом уровне, чтобы получить разбивку того, что находится в каждом каталоге.
Скорее всего, в вашей системе один из них установлен или доступен через диспетчер пакетов:
Графический:
Текстовые:
Они могут работать не так, как вы указали, но они должны делать большую часть того, что вам нужно.
Мой вариант ответа Брента:
# du -a | sort -rn | head
Это даст вам самые большие каталоги или файлы в дереве.
Вы можете сделать нечто подобное, используя find:
# find -maxdepth 2 -type d -exec du -sh {} \;
Но это не будет отсортировано по размеру и будет невероятно медленным и неэффективным. Лучше написать сценарий, который разбирает du -a.
(Хотел добавить это как комментарий к ответу Брента, но не вижу ссылки для этого). Недавно у меня была аналогичная проблема, и если вам нужно просто проверить один рассматриваемый раздел, добавление -x в ответ Брента очень полезно, особенно если у некоторых каталогов есть свой раздел.
Так было бы:
du -ckx / | sort -rn | head
Это дает вам отсортированный удобочитаемый размер 10 самых больших файлов / папок во всем дереве каталогов:
du -ah | sort -hr | head
пример
1019M .
431M ./prod
195M ./prod/mainprogram
180M ./utils
162M ./prod/subprogram1
157M ./.git
156M ./py
155M ./.git/objects
148M ./.git/objects/pack
128M ./prod/mainprogram/hdf
При выводе, удобочитаемом человеком, следует помнить, что обратная числовая сортировка не будет работать должным образом, если ее не исправить. Более быстрый вариант - использовать переключатель -k для вывода информации о размере каталога в килобайтах.
Я бы коротко заглянул в справочную страницу sort - в некоторых системах вы можете использовать sort -h
для сортировки удобочитаемого вывода. Я использовал это в CentOS 6.2 с сортировкой 8.4. В противном случае вы можете перенаправить вывод du -h
в файл и отсортируйте его примерно так:
for i in K M G; do egrep "^[0-9,\.]+${i}" somefile | sort -n; done
Я не знаю инструмента командной строки, который делает это (кроме того, что предлагали другие ответы), но если вы можете запускать программы с графическим интерфейсом на этом компьютере, попробуйте KDirStat. Он показывает использование диска всеми файлами и каталогами в определенном корне, отсортированное по размеру (по умолчанию).