Linuxを使っているときに、マシンのストレージが残り少なくなってきて、容量節約のために、どのディレクトリのサイズが大きいのか知りたくなることがありました。
そんな時にであったコマンドが”du”。
du コマンドは、指定したディレクトリとそのサブディレクトリの容量を一覧表示してくれるコマンドです。
ただ、そのまま実行すると、サブディレクトリをすべて表示されるため、とても見づらくなります(以下実行例)。
$ du
0 ./dir1/dir1_1
8 ./dir1
8 ./dir2/dir2_1
0 ./dir2/dir2_2
16 ./dir2
0 ./dir3/dir3_1
0 ./dir3/dir3_2
0 ./dir3/dir3_3
0 ./dir3
24 .
0 ./dir1/dir1_1
8 ./dir1
8 ./dir2/dir2_1
0 ./dir2/dir2_2
16 ./dir2
0 ./dir3/dir3_1
0 ./dir3/dir3_2
0 ./dir3/dir3_3
0 ./dir3
24 .
そこでおすすめが、オプションの”-s”と引数”*”です。
このオプションと引数を指定すると、
カレントディレクトリにあるディレクト内のサブディレクトリのサイズを合計した値で表示してくれます(上の実行例と同じディレクトリ構成に対して実行した結果↓)。
$ du -s *
8 dir1
16 dir2
0 dir3
8 dir1
16 dir2
0 dir3
これはこれでいいのですが、場合によっては、結果をサイズの大きい順に並べたい、という欲が出てきたりします。
その場合には、”|(パイプ)”と”sort”コマンドを利用しちゃいます。
$ du -s * | sort -nr
16 dir2
8 dir1
0 dir3
16 dir2
8 dir1
0 dir3
今回の例では、対象のディレクトリが3つでしたので、並び替える必要があまりありませんが、ディレクトリが多くなってくると、なかなか有効です。
ちなみに、duコマンドでサイズを確認できるディレクトリは、実行したユーザの権限に限られます。また、確認する対象のサイズが大きくほど処理が遅くなります。
見当がつくようであれば、ある程度まとを絞って実行したほうが効率的かもしれません。