Почему ls -lh не показывает общий размер всех файлов и каталогов в каждом каталоге?

Например, оно показывает ядро ​​как 18M, а папка Applications - 3.8K.

BSD/Darwin

2 ответа

Согласно справочной странице для ls:

List information about the FILEs (the current directory by default).

ls предназначен для отображения размера файлов в файловой системе, а не для отображения использования каталога. du покажет общее использование объекта файловой системы.

Так ls делает то, что должен делать. В то время как ваш каталог приложений может содержать файлы, которые используют более 3,8 КБ, сам каталог приложений на самом деле имеет только 3,8 КБ на диске.

Потому что вы не в Windows, где мир притворяется, что каталоги не требуют места, а все каталоги имеют нулевую длину. (Некоторые части мира Windows делают вид, что размер каталога - это совокупный размер всех элементов, содержащихся в каталоге.)

В Unix и Linux ls -l Команда, при отображении записи каталога, которая указывает на другой каталог, показывает размер каталога. Он показывает количество места, выделенного для фактического хранения записей в самом каталоге. Для каждой записи каталога ls -l всегда показывает размер узла, на который указывает эта запись, будь то файл, символическая ссылка или каталог.

Другие вопросы по тегам