Kus*_*nda 36
ls -l将为您提供文件的表观大小,这是程序从头到尾读取文件时将读取的字节数。 du会给你“磁盘上”文件的大小。
默认情况下,du以磁盘块数为单位为您提供文件大小,但您可以使用它-h来获取人类可读的单位。另请参阅du系统手册。
请注意,对于 GNU coreutil du(这可能是您在 Linux 上拥有的),使用-bto get bytes 意味着该--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
Run Code Online (Sandbox Code Playgroud)
这意味着这是一个 512 MB 的文件,在磁盘上占用大约 24 KB。它是一个稀疏文件(大部分零实际上并未写入磁盘,而是表示为文件中的逻辑“洞”)。稀疏文件在处理预先分配的大文件时很常见,例如虚拟机的磁盘映像或交换文件等。创建稀疏文件很快,而用零填充它很慢(而且没有必要)。
另请参阅fallocateLinux 系统上的手册。
我得到这样的文件大小(以字节为单位):
actualsize=$(du -b "${file}" | cut -f 1)
Run Code Online (Sandbox Code Playgroud)