我经常使用du
命令。最近,我用它来查找我服务器根目录下的5个最重的文件,我使用了以下命令:
sudo du -ah / | sort -nr | head -n 5
结果是:
1016K /var/cache/apt/archives/fonts-dejavu-core_2.35-1_all.deb
1016K /bin/bash
1008K /usr/src/linux-aws-headers-4.4.0-1052/fs
1008K /usr/src/linux-aws-headers-4.4.0-1049/fs
1004K /var/awslogs/lib/python2.7/site-packages/botocore/data/ec2/2016-09-15/
然后我删除了-h,并观察到完全不同的结果:
sudo du -a / | sort -nr | head -n 5
结果:
2551396 /
1189240 /usr
894000 /var
541836 /usr/lib
406276 /var/lib
来自man
的{{1}}页,
du
根据我的理解,-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
的包含或排除不应该真正导致结果发生变化,只是尺寸格式。
你能帮我理解为什么会这样吗?
答案 0 :(得分:0)
sort
命令不考虑K / M / G,并对所有" K"进行排序。在此之前" M"。
答案 1 :(得分:0)
1016K
在数值上大于2M
。 sort -n
只提取1016
和2
。
如果您的排序支持,请尝试sort -h
。
答案 2 :(得分:0)
可能是-h
你的目录'大小类似于2G
或4G
,而文件仍为1016K
或1008K
,而2
小于1016
,因此目录会被整理出来到列表的末尾。
没有-h
目录的总大小(实际上是:目录树)显然大于内部文件的大小,因此目录在列表的顶部排序。