杜为什么会给出不同的结果?

时间:2018-03-08 09:42:53

标签: linux shell command-line du

我经常使用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) 的包含或排除不应该真正导致结果发生变化,只是尺寸格式。

你能帮我理解为什么会这样吗?

3 个答案:

答案 0 :(得分:0)

sort命令不考虑K / M / G,并对所有" K"进行排序。在此之前" M"。

答案 1 :(得分:0)

1016K在数值上大于2Msort -n只提取10162

如果您的排序支持,请尝试sort -h

答案 2 :(得分:0)

可能是-h你的目录'大小类似于2G4G,而文件仍为1016K1008K,而2小于1016,因此目录会被整理出来到列表的末尾。

没有-h目录的总大小(实际上是:目录树)显然大于内部文件的大小,因此目录在列表的顶部排序。