我正在比较
ls -lh
显示的四舍五入的文件大小值和以字节为单位显示的原始大小(例如ls -l
)。我很难弄清它使用什么算法将字节转换为单位。 我的假设是,它将单位K,M,G解释为以下两种情况之一:
- (a) 10^3, 10^6, 10^9,或者
- (b) 1024, 1024^2, 1024^3。
ls -l
报告其大小为2052字节,而ls -lh
则四舍五入为2.1K:$ ls -l usercount.c
-rw-r--r-- 1 squirrel lsf 2052 May 13 15:41 usercount.c
$ ls -lh usercount.c
-rw-r--r-- 1 squirrel lsf 2.1K May 13 15:41 usercount.c
这似乎支持假设(a),因为2052/1000=2.052,四舍五入为2.1K,但2052/1024=2.0039,四舍五入到小数点后一位时显然会显示为2.0K。
另一方面,我有另一个文件,ls -l
报告其大小为7223字节,而ls -lh
显示为7.1K:
$ ls -l traverse.readdir_r.c
-rw-r--r-- 1 squirrel lsf 7223 Jul 21 2014 traverse.readdir_r.c
$ ls -lh traverse.readdir_r.c
-rw-r--r-- 1 squirrel lsf 7.1K Jul 21 2014 traverse.readdir_r.c
这似乎支持假设(b),因为7223/1000=7.223,应该四舍五入为7.2K,但是7223/1024=7.0537,四舍五入到显示的7.1K。
这使我得出结论,我的假设是错误的,它既不是(a)也不是(b)。ls
使用什么算法来进行此舍入?