Вывести список размеров текущей папки с помощью терминала?

134

Я хочу список папок из текущего каталога или тот, который я указываю с их размером.

Я пробовал с du, но я получаю только размер директорий, которые я определяю (du. .Ff), а ls не показывает размер папок.

Как мне сделать это без каких-либо сценариев?

Кевин
источник
не звучать как придурок, но «человек дю»;)
Якуб
5
Спасибо ;-) но я уже попробовал и ничего не смог найти. И попробуйте Googling du!
Кевин

Ответы:

212

Если вы хотите показать все каталоги в текущем каталоге:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

Чтобы показать их, начиная с другого каталога:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Если вы хотите убедиться, что каталоги с именами, начинающимися с точки, включены, сделайте в shopt -s dotglobпервую очередь.

Деннис Уильямсон
источник
Спасибо всем отличные ответы, но этот самый простой. Я забыл окончание / в моих тестах.
Кевин
1
Где -s означает суммирование, отображает общее количество, а -h означает удобочитаемое человеком
wranvaud
2
Сортировать папки по размеру: du -s */ | sort -n.
Антон Тарасенко
1
@AntonTarasenko: сортировка читабельных размеров
Деннис Уильямсон,
1
@AntonTarasenko: shopt -s dotglob док
Деннис Уильямсон,
18

На Mac опция --max-глубина заменяется на -d [глубину]. Итак, чтобы увидеть удобочитаемый список вашего корневого диска плюс 2 уровня, используйте следующее:

du -hd 2 /* 

Примечание: эта команда выставит два верхних уровня каталогов за пределы вашего корня. Это включает в себя прохождение одного уровня в ваши тома и перечисление итоговых размеров каждого каталога верхнего уровня в каждом из подключенных томов. В зависимости от того, что вы добавили, выполнение этой команды может занять некоторое время.

jadik
источник
13

Другой подход - опция -max-глубина.

du -h --max-depth=1 .

Перечислит все каталоги и файлы в текущей папке с размером.

Глубина 2 будет перечислять еще один уровень папок.

Матиас Крулл
источник
4
На Mac это du -hd 2 .2 уровня глубины.
Райан
О да. И, вероятно, на FreeBSD. Спасибо за информацию.
Матиас Крулл
5

Пытаться:

$ du -s ./f1

или же

$ du -sh ./f1

для более дружественных читаемых размеров.

Даг Харрис
источник
2

$ du --max-depth=1 /var/www/ | sort -n -r

Андре Мескита
источник
3
При добавлении ответа на более старый вопрос с существующими ответами хорошей практикой является объяснение отличия вашего ответа и включение некоторого объяснения, чтобы оно не было ответом только команды.
Джейсон Аллер
3
Можете ли вы расширить свой ответ, чтобы объяснить, что делают параметры?
fixer1234
2

Стоит упомянуть команду оболочки NCurses Disk Usage .

Ncdu - это анализатор использования дисков с интерфейсом ncurses. Он предназначен для поиска космических свиней на удаленном сервере, где у вас нет полной графической настройки, но это полезный инструмент даже на обычных настольных системах. Ncdu стремится быть быстрым, простым и легким в использовании и должен быть в состоянии работать в любой минимальной POSIX-подобной среде с установленными ncurses.

луч
источник
2

Основываясь на принятом ответе, эта команда покажет вам размеры папок в каталоге, а также перечислит их по размеру, чтобы вам было легче их интерпретировать:

$ du -sh */ | sort -rn
Итан
источник
1

На Mac вы можете установить реализацию GNU (Linux) duс помощью Homebrew ( brew install coreutils). Тогда, например:

gdu folder -shL --exclude=.git

где

  • gduимя, данное реализации GNU du(по умолчанию Homebrew не скрывает /usr/bin/du);
  • s выдает итоговую сумму для указанной папки (опустите, если хотите увидеть разбивку);
  • h выводит удобочитаемые размеры;
  • L следует за символическими ссылками;
  • --exclude=.git исключает каталог git в указанной папке (это только пример).

Вы можете игнорировать больше папок, добавив --exclude=blah. Вы также можете указать несколько папок одновременно (то есть gdu folder1 folder2 ...), и в этом случае вы можете объединить все промежуточные итоги в один размер, используя опцию c.

Sheljohn
источник
1

Вот скрипт POSIX, который будет работать с:

  • Файл
  • файлы
  • Каталог
  • Справочники
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Источник

Стивен Пенни
источник