Как узнать топ каталоги или файлы, занимающие много места?

11

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

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

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

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

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

Дэцин
источник

Ответы:

5

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

Уве Плонус
источник
10

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

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

обкрадывать
источник
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"}'

Это будет выглядеть так: введите описание изображения здесь

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

mnmnc
источник
9

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

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

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

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

Стефан Зайдель
источник
2
в командной строке вы должны попробовать ncdu. Вообще-то, это курс лечения.
Роб
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 самых больших файлов в текущей папке и подпапках.

user275234
источник
3
Можете ли вы расширить свой ответ?
50-3