くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

【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:帰ってきたら続きで、コマンドプロンプトのばあいを書く