11

На моем диске недостаточно места:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Я хотел бы пройтись по всему домашнему каталогу и выяснить 10 лучших занимающих место каталогов или файлов, чтобы решить, кого следует удалить.

du -sh * может видеть размер всех подкаталогов, но получает только текущую папку. Возможно, мне придется разделить на множество подкаталогов соответственно и рекурсивно, чтобы понять, кто является виновником, в котором я нуждаюсь.

Есть ли хороший способ сделать это?

8 ответов8

10

ncdu - это опция командной строки, которая сканирует каталоги и отображает использование диска от самого высокого до самого низкого. Это мой инструмент для этого.

Вам все равно придется рекурсивно погружаться таким образом, но это простой и удобный способ сделать это.

9

дю | сортировать -rn | голова

  • du = Использование диска
  • сортировка с использованием числового порядка, обратный
  • десять первых строк
9

Используйте эту команду:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

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

Если вы хотите проанализировать только /home - вы можете указать это в команде следующим образом:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Это будет выглядеть так:

Взято отсюда.

5

Если вы можете использовать графический интерфейс, попробуйте Baobab. Это графический инструмент для анализа использования места на жестком диске.

4

+1 за баобаб. в командной строке я обычно просто использую du -hcsx * или du -hcsx * | sort -h (нужна последняя версия sort), а затем я проверяю подкаталоги.

Кроме того, в mc есть удобная функция вычисления размеров подкаталогов, нажав Ctrl+Пробел в верхней части (нажмите Ctrl+Пробел в верхней части .. чтобы вычислить размер для всех подкаталогов. Затем вы можете выбрать сортировку по размеру в меню.

1

Попробуй это:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10
0

Другой любимый графический интерфейс: kdirstat

У этого есть хорошие возможности детализации и и (расширяемые) меню инструментов, чтобы помочь вам удалить / сжать ваши файлы.

У меня также есть сценарий командной строки, который я называю dir_usage, который я загрузил в pastebin.

-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Командная строка выше делает следующее (по порядку):

  • Найти все файлы (не каталоги) в текущей папке
  • Показать использование для каждого из них
  • Сортировать результаты численно
  • Используйте только последние 10 строк (максимальное использование)
  • Вырежьте 10 имен файлов (первый столбец - использование, второй - имя файла)
  • Отображение использования для каждого имени файла (в человеческом формате)

Это приведет к списку удобочитаемых размеров 10 самых больших файлов в текущей папке и подпапках.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .