操作 du 的输出以获得自定义打印输出

操作 du 的输出以获得自定义打印输出

我通常运行下面的命令来检查每个目录的大小。

du -sBM /* | sort -nr | head -n20

然而,在这里指定块大小“M”将为所有内容赋予“M”中的值。问题是,一旦低于 1M,所有数据都会报告为 1M。所以这个解决方案对我来说并不是最佳的。如果我运行以下命令:

du -sh /* | sort -nr | head -n20

我得到了我真正想要的输出(块大小为 G、M 和 K),但它全部乱序。例如:

618M    /var
387M    /lib
336M    /home
260K    /root
184K    /dev
102M    /boot
32M /etc
32K /tmp
27M /lib64
24K /opt
16K /lost+found
14M /sbin
8.0K    /mnt
7.4M    /bin
4.0K    /srv
4.0K    /net
4.0K    /misc
4.0K    /media
4.0K    /cgroup
2.2G    /usr

我把 M 放在 G 上面,K 放在 M 上面,依此类推。我希望我的输出看起来像这样:

2.2G    /usr
618M    /var
387M    /lib
336M    /home
102M    /boot
32M     /etc
27M     /lib64
14M     /sbin
260K    /root
184K    /dev
32K     /tmp
24K     /opt
16K     /lost+found
8.0K    /mnt
7.4M    /bin
4.0K    /srv
4.0K    /net
4.0K    /misc
4.0K    /media
4.0K    /cgroup

这里是否有一句台词可以做我想要的事情,或者脚本是否是更好的解决方案?

答案1

使用sort-h选项代替-n

du -sh /* | sort -hr | head -n20

相关内容