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

おすすめ記事