Answers:
ls -l将为您提供文件的外观大小,即程序从头到尾读取文件时将读取的字节数。 du将为您提供“磁盘上”文件的大小。
默认情况下,du以磁盘块数为您提供文件的大小,但是您可以使用它-h来获取人类可读的单位。另请参见du系统上的手册。
请注意,使用GNU coreutil du(可能是Linux上的版本), -b获取字节表示该--apparent-size选项。这不是您要用来获取磁盘上实际使用的字节数的方式。而是使用--block-size=1或-B 1。
使用GNU ls,您也可以ls -s --block-size=1对文件进行处理。这将提供与du -B 1文件相同的编号。
例:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
这意味着这是一个512 MB的文件,大约需要24 KB的磁盘空间。它是一个稀疏文件(大多数零实际上并未写入磁盘,但在文件中表示为逻辑“空洞”)。当使用预分配的大文件(例如虚拟机的磁盘映像或交换文件等)时,稀疏文件是常见的。创建稀疏文件很快,而用零填充则很慢(并且是不必要的)。
另请参见fallocateLinux系统上的手册。
du显示文件实际使用的磁盘数量,而显示的视在大小(逻辑大小)ls是程序可以从中读取多少字节。如果文件稀疏,则某些读取字节将为零,但它们仍将传递给读取它们的程序(不是从磁盘读取)。