Невозможно получить размер каталога с помощью ls
Вопрос
Я безуспешно запускаю команду, чтобы получить размер каталогов (файлы внутри соответствуют размеру каталога)
ls -lSrh
Я получаю только килобиты за размер каталогов, а их содержимое больше.
Как вы можете перечислить размер каталогов, включая их содержимое, в количестве лс?
Решение
du -sh directory_name
ls
сообщит вам размер каталога вход, а не содержимого каталога.Судя по моему беглому просмотру man ls
кажется, нет способа сделать ls
погрузитесь и вычислите размер каталогов (скорее всего, потому что это будет дорогостоящая операция).
Другие советы
Если вы хотите получить размер каталогов, вы можете использовать
du -sh
du -hs
отлично, пока у вас не большой каталог.
Например, если вы храните файлы кэша (например, хранилище кэша файловой системы для Rails) или загруженные файлы… с секционированной схемой, например «cache/123/456/789/real_files», и у вас их много, du
занимает вечность и в конечном итоге блокирует все операции ввода-вывода.
У меня нет лучшего решения, но это следует учитывать, прежде чем запускать это на рабочем сервере в часы пик.
Основываясь на ответе Шона Брайта, вы можете сделать следующее (в BASH):
for each in $(echo */ | sed "s/ /\n/g" | sed "s/\///g"); do du -hs "$each"; done;
Это позволит получить полное содержимое каталога для всех каталогов в текущем каталоге.