全力で怠けたい

怠けるために全力を尽くしたいブログ。

sort コマンドが human readable な数値をソートできて便利。

sort コマンドが human readable な数値をソートできて便利なのでメモしておく。

Ubuntu のバージョン。

$ cat /etc/os-release | grep VERSION_ID
VERSION_ID="20.04"

sort コマンドで human readable な数値をソートする

自分はディレクトリごとのディスク使用量を human readable な形式で表示してザッと見るには du -sh コマンドを実行する。 du コマンドを -h オプションを指定して実行すると 892K みたいに人間が読みやすい形式で表示してくれるけど、ディスク使用量の昇順でソートしようと sort コマンドを通しても期待どおりにはソートしない。

$ ls
a/ b/ c/ d/

$ du -sh ./*
892K    ./a
1.6M    ./b
31M ./c
4.0K    ./d

$ du -sh ./* | sort
1.6M    ./b
31M ./c
4.0K    ./d
892K    ./a

sort -n みたいに文字列を数値と見なしてソートしてもやっぱり期待どおりにはソートしない。

$ du -sh ./* | sort -n
1.6M    ./b
4.0K    ./d
31M ./c
892K    ./a

実は sort コマンドは human readable な数値をソートする -h オプション (--human-numeric-sort オプション) が用意されていて、このオプションを使うと human readable な数値を簡単にソートできる。 すごく便利。

$ du -s ./* | sort -h
4.0K    ./d
892K    ./a
1.6M    ./b
31M ./c