web-dev-qa-db-ja.com

最大のディレクトリ/ファイルを再帰的に見つける

上のx最大のディレクトリ/ファイルを表示し、次にそれらのフォルダーに下り、設定可能なx最大のディレクトリ/ファイルを表示するスクリプト/プログラムを探しています深さ。

231MB bin
 - 220MB ls
  - 190MB dir
  - 15MB def
  - 3MB lpr
 - 10MB asd
 - 1MB link

どうやってやるの?

16
Robert Munteanu

あなたは10の最大のディレクトリを見ることができます:

du -cks *|sort -rn|head

これにより、各ディレクトリのすべてのサイズが再帰的に追加されます。ただし、各レベルでの内訳を取得するには、各レベルで手動で実行する必要があります。

22
Brent

おそらく、システムに次のいずれかがインストールされているか、パッケージマネージャーから利用できる可能性があります。

グラフィカル:

  • Baobab -別名Disk Usage Analyzer-Gnome(アプリケーション>アクセサリまたはアプリケーション>システムツール)
  • KDirStat -KDE
  • Filelight -KDE
  • TreeSize for Unix-GTK2

テキストベース:

  • ncd -ncurses
  • gt5 -テキストブラウザ(lynx、w3mなど-自動選択)-実際にはシェルスクリプトです!

指定したとおりに機能しない可能性がありますが、必要な機能のほとんどを実行するはずです。

ブレントの答えの私のバリエーションは:

# du -a | sort -rn | head

ツリー内で最大のディレクトリまたはファイルが表示されます。

7
David Pashley

あなたはfindを使って同様のことをすることができます:

# find -maxdepth 2 -type d -exec du -sh {} \;

しかし、これはサイズでソートされず、信じられないほど遅く、非効率的です。 du -aを解析するスクリプトを書くほうがよいでしょう。

3
David Pashley

(これをブレントの回答へのコメントとして追加したいが、それを行うためのリンクが表示されない)私は最近同様の問題があり、問題のパーティションを1つだけ確認する必要がある場合は、ブレントの回答に-xを追加するとかなり便利です。特に、いくつかのディレクトリに独自のパーティションがある場合。

だからそれは:

du -ckx / | sort -rn | head 
2
rumz

これにより、ディレクトリツリー全体で最大のファイル/フォルダーのトップ10の、人間が読めるサイズにソートされます。

du -ah | sort -hr | head

1019M   .
431M    ./prod
195M    ./prod/mainprogram
180M    ./utils
162M    ./prod/subprogram1
157M    ./.git
156M    ./py
155M    ./.git/objects
148M    ./.git/objects/pack
128M    ./prod/mainprogram/hdf
2
Chris Redford

人間が読める出力について覚えておくべきことは、数値を逆に並べ替えると、修正しないと期待どおりに機能しないことです。より迅速なオプションは、-kスイッチを使用して、ディレクトリサイズ情報をキロバイト単位で出力することです。

Sortのマンページを少し見てみましょう-一部のシステムでは、sort -hを使用して人間が読める出力をソートできます。 CentOS 6.2と並べ替え8.4でこれを使用しました。それ以外の場合は、du -hの出力をファイルにリダイレクトし、次のように並べ替えることができます。

for i in K M G; do egrep "^[0-9,\.]+${i}" somefile | sort -n; done
1
Gary Chambers

これを行うコマンドラインツールは他の回答が示唆しているもの以外はわかりませんが、このマシンでGUIプログラムを実行できる場合は、 KDirStat を試してください。これは、特定のルートの下にあるすべてのファイルとディレクトリのディスク使用量を、サイズ(デフォルト)でソートして表示します。

0
David Z