web-dev-qa-db-ja.com

スペースを最も消費しているディレクトリまたはファイルを見つける方法は?

ディスクの容量が不足しています:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

ホームディレクトリ全体を調べ、スペースを消費する上位10個のディレクトリまたはファイルを見つけて、削除するユーザーを決定します。

du -sh *はすべてのサブディレクトリのサイズを表示できますが、現在のフォルダーのみを取得します。私が必要とする犯人が誰であるかを知るために、それぞれ多くのサブディレクトリに再帰的に分割する必要があるかもしれません。

これを行う良い方法はありますか?

11
Deqing

GUIを使用できる場合は、 Baobab を試してください。これは、ハードディスク領域の使用状況を分析するためのグラフィカルツールです。

5
Uwe Plonus

ncd は、ディレクトリをスキャンし、ディスク使用量を最高から最低まで一覧表示するコマンドラインオプションです。これが私のツールです。

この方法でも、再帰的にダイビングする必要がありますが、これは簡単な方法です。

10
Rob

du |並べ替え-rn |頭

  • du =ディスク使用量
  • 番号順で並べ替え、逆順
  • 最初の10行
9
Julien

次のコマンドを使用します。

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

スペースの大部分を消費しているディレクトリをパーセンテージで示したグラフのようなコマンドラインが表示されます。

/homeのみを分析する場合は、次のようにコマンドで指定できます。

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

それはそのようになります: enter image description here

here から取得。

9
mnmnc

バオバブの+1。コマンドラインでは、通常、du -hcsx *またはdu -hcsx * | sort -h(失敗した最新バージョンのsortが必要)、次にサブディレクトリを確認します。

また、mcには、 Ctrl+Space その上に(プレス Ctrl+Space の上に ..を使用して、すべてのサブディレクトリのサイズを計算します。次に、メニューでサイズによるソートを選択できます。

4
Stefan Seidel

これを試して:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10
1
Rajeev

別のGUIのお気に入り: kdirstat

ニースのドリルダウン機能と、ファイルの削除/圧縮に役立つ(拡張可能な)ツールメニューがあります。

また、Pastebinにアップロードした dir_usage というコマンドラインスクリプトもあります。

0
Rich Homolka