【bash】ワンライナーで、ディスク使用量の多いディレクトリトップ10を出力する
du -s /usr/ports/* 2>/dev/null | sort -r -n | head -10 | awk '{print $2}' | xargs du -sh 2>/dev/null | cat -n
ざっくりとした解説
- du -s して各ディレクトリの容量の集計を取得
- sort -r -n でひっくり返す
- -n オプションは、フィールドを数値扱いでソートするオプション
-n, --numeric-sort
compare according to string numerical value
- awk でディレクトリ名だけを抽出して
- head -10 でトップ10を抽出
- xargsして
- 再度 du -s する。今度は -h を付けて見やすく。
- ついでに cat -n で行番号を付ける。
- ※du に 2>/dev/nullが付いているのは、権限不足でディレクトリが参照できない時のエラーメッセージをあえて無視するため。
出力結果はこんな感じ
1 60M /usr/ports/devel 2 52M /usr/ports/www 3 26M /usr/ports/games 4 24M /usr/ports/INDEX-8 5 20M /usr/ports/net 6 20M /usr/ports/graphics 7 19M /usr/ports/textproc 8 19M /usr/ports/security 9 16M /usr/ports/sysutils 10 15M /usr/ports/lang
NOTE:帰ってきたら続きで、コマンドプロンプトのばあいを書く