上のx最大のディレクトリ/ファイルを表示し、次にそれらのフォルダーに下り、設定可能なx最大のディレクトリ/ファイルを表示するスクリプト/プログラムを探しています深さ。
231MB bin
- 220MB ls
- 190MB dir
- 15MB def
- 3MB lpr
- 10MB asd
- 1MB link
どうやってやるの?
あなたは10の最大のディレクトリを見ることができます:
du -cks *|sort -rn|head
これにより、各ディレクトリのすべてのサイズが再帰的に追加されます。ただし、各レベルでの内訳を取得するには、各レベルで手動で実行する必要があります。
ブレントの答えの私のバリエーションは:
# du -a | sort -rn | head
ツリー内で最大のディレクトリまたはファイルが表示されます。
あなたはfindを使って同様のことをすることができます:
# find -maxdepth 2 -type d -exec du -sh {} \;
しかし、これはサイズでソートされず、信じられないほど遅く、非効率的です。 du -aを解析するスクリプトを書くほうがよいでしょう。
(これをブレントの回答へのコメントとして追加したいが、それを行うためのリンクが表示されない)私は最近同様の問題があり、問題のパーティションを1つだけ確認する必要がある場合は、ブレントの回答に-xを追加するとかなり便利です。特に、いくつかのディレクトリに独自のパーティションがある場合。
だからそれは:
du -ckx / | sort -rn | head
これにより、ディレクトリツリー全体で最大のファイル/フォルダーのトップ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
人間が読める出力について覚えておくべきことは、数値を逆に並べ替えると、修正しないと期待どおりに機能しないことです。より迅速なオプションは、-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
これを行うコマンドラインツールは他の回答が示唆しているもの以外はわかりませんが、このマシンでGUIプログラムを実行できる場合は、 KDirStat を試してください。これは、特定のルートの下にあるすべてのファイルとディレクトリのディスク使用量を、サイズ(デフォルト)でソートして表示します。