2009-03-24 4 views
4

я бегу команды неудачно, чтобы получить размер каталогов (файлы внутри принадлежат к размеру каталога)Невозможно получить размер каталога Л.С.

ls -lSrh 

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

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

ответ

20
du -sh directory_name 

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

+0

И на любой вкус ls, доступный в Windows (я проверил Cygwin, GnuWin32 и MSYS), все каталоги имеют нулевой размер. Вы даже не видите размер списка записей в каталоге, как в (наиболее?) * Nix-вариантах. – RBerteig

+0

Я не нашел возможности поместить каталоги в порядок в соответствии с размером. Как вы можете это сделать? –

+0

Это ashawley

3

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

du -sh 
1

du -hs велик, пока вы не большой каталог.

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

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

1

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

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

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