为什么ls -lh和ls -ldh给我不同的文件大小?

为什么在截图中显示的文件大小有所不同,即ls -lh下的文件总大小是44k,而文件夹的大小只有4k? 我读错了吗? 在这里输入图像说明

是的,你读错了。 4.0K是磁盘上/tmp文件夹条目占用的大小。 它通常总是4k(虽然可能会增加取决于某些因素)。 ls也不占用子文件夹内容占用的空间。

你真正想看的是du命令,以获得总磁盘空间的良好感觉。

 gbeech@ny-man01:~$ ls -lh total 3.6G 

VS

 gbeech@ny-man01:~$ du -sh 36G . 

ls -lh给你的/tmp内容的大小。 ls -ldh /tmp给你目录文件/tmp的大小,它包含/tmp内容的信息。

在Linux / Unix下,一个目录只是一个文件,其中包含d开关所说的列出directoy条目的信息,而不是内容。

编辑

如果你想知道(大约)一组文件占用了多less磁盘空间,那么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 

这是文件大小的总和。