Невозможно получить размер каталога с помощью ls

StackOverflow https://stackoverflow.com/questions/679567

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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;

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top