shell

duコマンドのサイズをわかりやすく表示してサイズ順にソートする

More than 3 years have passed since last update.


やり方

du コマンドは -h オプションで人間に読みやすい形式にできます。

% du -h 

3.8M ./世界のさまざまなバレンタインとその習慣♥♥.key/Data
12K ./世界のさまざまなバレンタインとその習慣♥♥.key/Metadata
4.0M ./世界のさまざまなバレンタインとその習慣♥♥.key
2.7M ./世界のさまざまなバレンタインとその習慣♥♥_pub.key/Data
12K ./世界のさまざまなバレンタインとその習慣♥♥_pub.key/Metadata
3.0M ./世界のさまざまなバレンタインとその習慣♥♥_pub.key
7.0M .

しかし、3.8Mや12Kという値では sort コマンドでソートすることができません。

そこで、du をバイト単位で表示し、sort を使ってソートしてからcoreutilsにある numfmt コマンドでわかりやすい単位をつけます。

Linuxなどを使っていてGNU coreutilsが入っていれば何も考えずに

du -b | sort -n | numfmt --to=iec --suffix=B --padding=5

と打ちましょう。すると

% du -b | sort -n | numfmt --to=iec --suffix=B --padding=5                                                                                      

819B ./世界のさまざまなバレンタインとその習慣♥♥.key/Metadata
819B ./世界のさまざまなバレンタインとその習慣♥♥_pub.key/Metadata
2.6MB ./世界のさまざまなバレンタインとその習慣♥♥_pub.key/Data
2.8MB ./世界のさまざまなバレンタインとその習慣♥♥_pub.key
3.5MB ./世界のさまざまなバレンタインとその習慣♥♥.key/Data
3.8MB ./世界のさまざまなバレンタインとその習慣♥♥.key
6.5MB .

なんだかいい感じですね。


やってること



  • du-b オプションでブロックサイズ単位からバイト単位で表示されます。


  • sort -n でファイルサイズ順に昇順でソートされます。


  • numfmt コマンドでいい感じにしてくれます。


OS Xでこれをやりたい

numfmt コマンドはGNU coreutilsにしかないので、Mac OS XではHomebrewでインストールすれば使えるようになります。

brew install coreutils

どうやらBSDの du はバイト単位で表示する機能がないようです。よって、du もcoreutilsのものを使う必要があります。デフォルトだとインストールされるコマンドにgというプリフィックスがつくので、その場合は

gdu -b | sort -n | gnumfmt --to=iec --suffix=B --padding=5

gnumfmt を呼ぶ必要があります。