Невозможно получить размер каталога по ls - PullRequest
4 голосов
/ 25 марта 2009

Я безуспешно запускаю команду, чтобы получить размер каталогов (файлы внутри принадлежат размеру каталога)

ls -lSrh

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

Как вы можете перечислить размер каталогов, включая их содержимое, в число по ls ?

Ответы [ 4 ]

20 голосов
/ 25 марта 2009
du -sh directory_name

ls даст вам размер каталога запись , а не содержимое каталога. Судя по моему быстрому просмотру man ls, кажется, нет способа заставить ls погрузиться и рассчитать размер каталогов (скорее всего, потому что это будет дорогая операция).

3 голосов
/ 27 марта 2009

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

du -sh
1 голос
/ 01 ноября 2011

Опираясь на ответ Шона Брайта, вы можете сделать следующее (в BASH)

for each in $(echo */ | sed "s/ /\n/g" | sed "s/\///g");  do du -hs "$each"; done;

Это позволит получить полное содержимое каталога для всех каталогов в текущем каталоге.

1 голос
/ 04 октября 2011

du -hs отлично, пока у вас большой каталог.

Например, если вы храните файлы кэша (например, хранилище кэша файловой системы для Rails) или загруженные файлы… с секционированной схемой, такой как «cache / 123/456/789 / real_files», и у вас их много , du принимает навсегда, в конечном итоге блокируя все операции ввода-вывода.

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

...