带 -h 选项的 du 命令会修改显示的结果

带 -h 选项的 du 命令会修改显示的结果

尝试理解du命令的基础知识对我来说并不那么简单。例如,有此-h选项定义为以“人类可读格式”打印。问题是此选项会更改显示的值:

~$ du --apparent-size -sh Documents/
376M    Documents/
~$ du --apparent-size -s Documents/
384767  Documents/

通常 384767 应四舍五入为 385M。那么 376M 和 385M 哪个是正确的值?

更糟 :

~$ du -bsh Documents/
    376M    Documents/
~$ du -bs Documents/
    394001294   Documents/

答案1

正常情况下 384767 应该四舍五入为 385M

如果除以 1000,是的,但这不是 du 向您显示的内容。它使用 IEC(二进制)单位,其中1kB = 1024字节;1 MB = 1024 kB;等等。其他一些程序会将其显示为 KiB、MiB 等。

(大多数存储适用于 2 的幂大小的块,例如 512b 或 4096b 扇区,因此 IEC 二进制单位比 SI 十进制单位更合适。)

不带“-h”选项的“du”的默认单位是 1024 字节块(相当于 1 kB),因此它会384767 / 1024 = 375.749…四舍五入为 376 MB(或者如果您愿意,也可以是 MiB)。同样,当您使用“-b”选项以字节开头时,它就是394001294 / 1024 / 1024

--si如果您想要十进制单位(“HDD 制造商”单位),请添加该选项。这也适用于df -hls -lh(即来自“coreutils”的工具),尽管不一定适用于其他程序 - 有些程序总是使用 IEC 单位而没有切换选项。

相关内容