为什么 du 给出不同的结果?
Why does du give different results?
我经常使用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
来自 du
的 man
页,
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
根据我的理解,包括或排除 -h
应该不会真正导致结果发生变化,只是大小格式发生变化。
你能帮我理解为什么会这样吗?
sort
命令不考虑K/M/G,所有"K"排在所有"M"之前。
1016K
在数值上大于 2M
。 sort -n
仅提取 1016
和 2
.
如果您的类型支持,请尝试 sort -h
。
可能 -h
您的目录大小约为 2G
或 4G
,而文件保持 1016K
或 1008K
,以及 2
小于 1016
因此目录被整理到列表的末尾。
没有 -h
目录的总大小(实际上:目录树)明显大于内部文件的大小,因此目录排在列表的顶部。
我经常使用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
来自 du
的 man
页,
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
根据我的理解,包括或排除 -h
应该不会真正导致结果发生变化,只是大小格式发生变化。
你能帮我理解为什么会这样吗?
sort
命令不考虑K/M/G,所有"K"排在所有"M"之前。
1016K
在数值上大于 2M
。 sort -n
仅提取 1016
和 2
.
如果您的类型支持,请尝试 sort -h
。
可能 -h
您的目录大小约为 2G
或 4G
,而文件保持 1016K
或 1008K
,以及 2
小于 1016
因此目录被整理到列表的末尾。
没有 -h
目录的总大小(实际上:目录树)明显大于内部文件的大小,因此目录排在列表的顶部。