![操作 du 的输出以获得自定义打印输出](https://linux22.com/image/81316/%E6%93%8D%E4%BD%9C%20du%20%E7%9A%84%E8%BE%93%E5%87%BA%E4%BB%A5%E8%8E%B7%E5%BE%97%E8%87%AA%E5%AE%9A%E4%B9%89%E6%89%93%E5%8D%B0%E8%BE%93%E5%87%BA.png)
我通常运行下面的命令来检查每个目录的大小。
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