Почему 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
всегда показывает размер узла, на который указывает эта запись, будь то файл, символическая ссылка или каталог.