Ubuntu 22.04中创建文件大小与du显示大小不符的疑问
关于Ubuntu 22.04中文件大小显示的两个疑问解答
1. du -sh输出中的"M"代表MiB(Mebibyte)而非MB(Megabyte)
在Ubuntu 22.04的du命令里,-h(人类可读格式)选项默认采用1024进制的单位缩写:
K对应KiB(1024字节)M对应MiB(1024×1024=1,048,576字节)G对应GiB(1024³字节)
这是GNU coreutils工具集的默认行为,虽然显示的是M,但实际指向二进制单位MiB,而非十进制的MB(1000×1000=1,000,000字节)。如果需要强制使用十进制单位,可给du添加--si选项,此时显示的MB才是十进制的Megabyte。
2. 为何10MB的文件显示为9.6M?
核心原因是两个命令对单位的定义不同,加上数值近似导致:
- 创建文件的
head -c 10MB:GNUhead命令中,-c参数后的MB是十进制单位,即1MB=1,000,000字节,所以10MB对应的是10,000,000字节的文件。 du -sh的计算逻辑:du默认用二进制单位MiB计算,将10,000,000字节转换为MiB的过程为:10,000,000 ÷ 1,048,576 ≈ 9.5367 MiBdu -h会对结果做四舍五入的近似显示,最终呈现为9.6M。
内容的提问来源于stack exchange,提问作者HKS
相关产品推荐
相关产品推荐

