问题:我正在尝试使用单行计算我所在目录(忽略子目录)的平均文件大小。我有两种方法:
item.Style.Add("display", "none");
和
ls -l | gawk '{sum += $5; n++;} END {print sum/n;}'
它们似乎产生相似的数字,虽然不同的单位(第一个以kB为单位,第二个以MB为单位)。
然而,这些数字本身有些错误。这是怎么回事?哪一个更正确?
答案 0 :(得分:3)
du
和ls
报告的方式不同。考虑du
手册页的这一部分:
--apparent-size
print apparent sizes, rather than disk usage; although the
apparent size is usually smaller, it may be larger due to holes
in ('sparse') files, internal fragmentation, indirect blocks,
and the like
这可以了解ls
显示的内容(表观大小)与du
显示的内容之间可能存在的差异(默认情况下,实际磁盘使用情况)。
$ truncate -s 10737418240 sparse
$ ls -l sparse
-rw-rw-r-- 1 ec2-user ec2-user 10737418240 Feb 20 00:19 sparse
$ du sparse
0 sparse
$ ls -ls sparse
0 -rw-rw-r-- 1 ec2-user ec2-user 10737418240 Feb 20 00:19 sparse
以上显示了稀疏文件的报告差异。
此外,使用ls -l
计算文件将包括子目录,符号链接等。您可以使用find
仅显示文件:
find . -maxdepth 1 -type f