Почему существует разница в размерах файлов, как показано на скриншоте, то есть общий размер файла в ls -lh составляет 44 КБ, а размер папки всего 4 КБ? Я это неправильно читаю?
Да, вы неправильно это читаете. 4.0K - это размер на диске /tmp
запись в папке занимает. Как правило, это всегда 4k (хотя может повыситься в зависимости от определенных факторов). ls
также не учитывает пространство, занимаемое содержимым подпапки.
то, что вы действительно хотите посмотреть, это du
команда, чтобы получить хорошее представление об общем дисковом пространстве.
gbeech@ny-man01:~$ ls -lh
total 3.6G
против
gbeech@ny-man01:~$ du -sh
36G .
В ls -lh
дает вам размер содержимого /tmp
. В ls -ldh /tmp
дает вам размер файла каталога /tmp
который содержит информацию о содержании /tmp
.
В Linux / Unix каталог - это просто файл, содержащий информацию, d
переключатель говорит, что перечисляет запись директории, а не ее содержимое.
редактировать
Если вы хотите знать (приблизительно), сколько дискового пространства используется набором файлов, тогда du -h
даст вам это. Если вы хотите узнать сумму размеров файлов, тогда du -b
будет точнее.
например
du -h
56K ./vmware-root
12K ./.font-unix
8.0K ./.ICE-unix
164K .
du -b
28474 ./vmware-root
4096 ./.font-unix
4096 ./.ICE-unix
68798 .
Выход из du -b
соответствует выходу
find . -ls | awk '{total += $7} END {print total}'
68798
который является суммой размеров файлов.