最大のファイル/ディレクトリを見つけるためのLinuxユーティリティ[終了]


134

どのファイル/ディレクトリが最もスペースを占有しているかを示すプログラムを探しています:

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

私はそれがKDE3で可能であることを知っていますが、私はむしろそれをしたくありません-KDE4またはコマンドラインが好まれます。


Macユーザーには、Disk Inventory Xと呼ばれるこの無料ソフトウェアをお勧めします。ここからダウンロードしてください。derlien.comは、mac osxに簡単に使用できます
Nimitack

回答:


131

最大の10個のファイル(linux / bash)を見つけるには:

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

最大の10個のディレクトリを見つけるには:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

唯一の違いはあります-type {d:f}

名前にスペースを含むファイルを処理し、出力で人間が読めるファイルサイズを生成します。最後にリストされた最大のファイル。tailの引数は、表示される結果の数です(ここでは最大の10)。

ファイル名のスペースを処理するために使用される2つの手法があります。find -print0 | xargs -0ヌル区切り文字の代わりにスペースを使用し、第二のxargs -I{}入力項目を終了する改行の代わりにスペースを使用します。

例:

$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

  76M    ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M    ./tmp/projects/onthisday/onthisday.tar.gz
  114M   ./Dropbox/snapshots/weekly.tgz
  114M   ./Dropbox/snapshots/daily.tgz
  114M   ./Dropbox/snapshots/monthly.tgz
  117M   ./Calibre Library/Robert Martin/cc.mobi
  159M   ./.local/share/Trash/files/funky chicken.mpg
  346M   ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi

最初にリストされている最大のファイル:(find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}つまりのsort -nr | head -10代わりに使用sort -n | tail -10
サンドラロッシ

200

私は常に使用しますncdu。インタラクティブで非常に高速です。


ええ、それは小さいです!
ルークスタンレー

5
私はncduが大好きです。これは、私のお気に入りのGoogle検索の1つです。
ロブ

5
ワオ。これが存在することをどうして知りませんでした。ありがとう!
ピクセル

22
+ ---- ディスク容量ncduのようなものhtopです。超便利!
ノアサスマン

フラグも.configオプションもないように見えるので、ファイルとフォルダーが混ざり合っていて、相対的な統計情報が好きな場合、実行するたびに入力するキーシーケンスを以下に示します[t] [g] [g]
rymo

37

簡単に表示するには:

du | sort -n

最後に最大のディレクトリをすべてリストします。

du --max-depth=1 * | sort -n

または、再度、冗長な*を避けます。

du --max-depth=1 | sort -n

現在のディレクトリ内のすべてのディレクトリをリストし、最後に最も大きいディレクトリをリストします。

(最初のフィールドがテキストとしてではなく数値としてソートされるように、ソートのための-nパラメーターが必要ですが、これはソートにかなりの数が必要なため、duに-hパラメーターを使用することを除外します)

duの他のパラメーターは、シンボリックリンクをたどる(デフォルトではシンボリックリンクをたどらない)場合や、サブディレクトリを除くディレクトリコンテンツのサイズを表示する場合などに使用できます。duは、ディレクトリ内のファイルが最後に変更された日付と時刻をリストに含めることもできます。


3
*は本当に必要ですか。デフォルトでは、現在のディレクトリ内のすべてのファイルが含まれていませんか?
ジョシュハント

いいえ、*は冗長である必要があります。それを使用することが良い習慣か悪い習慣かの兆候かどうかはわかりません。それを指摘してくれてありがとう。オプションとしてそれを反映するように回答を修正しました。
MAS

これは問題ありませんが、結果はあまりフレンドリーではありません。私は通常これに目を向ける:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392

roman#du --max-depth = 1 | sort -n du:不正なオプション--使用法:du [-A] [-H | -L | -P] [-a | -s | -d深さ] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I mask] [file ...]
ホルム

du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0-少し
整頓

23

ほとんどの場合、CLIツールを好みますが、ドライブの使用にはfilelightが大好きです。このプレゼンテーションは、これまで見たどのスペース管理ツールよりも直感的です。

Filelightスクリーンショット


1
Filelightは、私のお気に入りのスペースホグプルーニングツールです。
ライアントンプソン

非常に良いアプリ。+1
rpax 14

視覚的には、芸術的に興味をそそられますが、直感的ですか?見ただけでは、それが何を表しているのか分かりません。誰か説明できますか?私はそのサイトに行きましたが、説明はありませんでした。
Gマン

Mac上で似たようなツールはDaisyDisk、で入手可能であるdaisydiskapp.com
computingfreak

20

FilelightはKDEユーザーには適していますが、完全を期すため(質問のタイトルは一般的です)、BaobabがUbuntuに含まれていること、別名Disk Usage Analyzerに言及する必要があります。

ここに画像の説明を入力してください


Macプラットフォームでこれと同等のものを探している場合は、DaisyDiskをチェックしてください。
computingfreak

8

GUIツールのKDirStatは、データを表形式とグラフィカルの両方で表示します。ほとんどのスペースが使用されている場所をすばやく確認できます。

ここに画像の説明を入力してください

これがまさにあなたが望んでいないKDEツールであるかどうかはわかりませんが、このような質問でまだ言及すべきだと思います。それは良いことであり、多くの人はおそらくそれを知らないでしょう-私は最近自分でそれについて知りました。


答えてくれてありがとう。それはだ、正確な私はKDE3でいたのと同じツールが、私はKDE 4に移動
ロバートムンテアヌ

KDE4のkdirstatを取得できないことは確かですか?
ジョニック2009

4
Kdirstatは非常に遅いです。ncdu代わりに使用してください。
デニーズ

ctrl + fを押してncduを見つけると、@ Daenyth
Rob

KDEでは、単にk4dirstatと呼ばれます
フィハグ

5

Unixでは常に組み合わせが最高のトリックです。

du -sk $(find . -type d) | sort -n -k 1

ディレクトリサイズをKBで表示し、最後に最大になるように並べ替えます。
しかし、ツリービューにはさらに多くの機能が必要です...本当に必要ですか?

このスキャンはディレクトリ全体にネストされているため、上位のディレクトリのサブディレクトリが再びカウント.され、最後にベースディレクトリが合計使用率の合計として表示されます。

ただし、特定の深さで検索するには、検索で深さコントロールを使用できます。
そして、実際にスキャンにもっと関与してください...あなたが望むものに応じて。深さ制御find-maxdepthし、-mindepth特定のサブディレクトリの深さに制限することができます。


arg-too-long問題の洗練されたバリエーションがあります

find . -type d -exec du -sk {} \; |  sort -n -k 1

私はそれを試してみましたが、「du:Task:No such file or directory」
ジョシュハント

答えてくれてありがとう。残念ながら、bash
ロバートムンテアヌ


2

そのようなネストされた出力は得られませんが、試してください du

du -h /path/to/dir/

Documentsフォルダーでそれを実行すると、次のように出力されます。

josh-hunts-macbook:Documents joshhunt$ du -h
  0B    ./Adobe Scripts
  0B    ./Colloquy Transcripts
 23M    ./Electronic Arts/The Sims 3/Custom Music
  0B    ./Electronic Arts/The Sims 3/InstalledWorlds
364K    ./Electronic Arts/The Sims 3/Library
 77M    ./Electronic Arts/The Sims 3/Recorded Videos
101M    ./Electronic Arts/The Sims 3/Saves
 40M    ./Electronic Arts/The Sims 3/Screenshots
1.6M    ./Electronic Arts/The Sims 3/Thumbnails
387M    ./Electronic Arts/The Sims 3
387M    ./Electronic Arts
984K    ./English Advanced/Documents
1.8M    ./English Advanced
  0B    ./English Extension/Documents
212K    ./English Extension
100K    ./English Tutoring
5.6M    ./IPT/Multimedia Assessment Task
720K    ./IPT/Transaction Processing Systems
8.6M    ./IPT
1.5M    ./Job
432K    ./Legal Studies/Crime
8.0K    ./Legal Studies/Documents
144K    ./Legal Studies/Family/PDFs
692K    ./Legal Studies/Family
1.1M    ./Legal Studies
380K    ./Maths/Assessment Task 1
388K    ./Maths
[...]

次に、出力をパイプすることで出力をソートできます sort

du /path/to/dir | sort -n

感謝しますが、どのディレクトリが最大であるかを正しく表示しません。ホームディレクトリで起動すると、出力は使用できません。
ロバートムンテアヌ

1

自動的に実行するスクリプトを次に示します。

http://www.thegeekscope.com/linux-script-to-find-largest-files/

スクリプトのサンプル出力は次のとおりです。

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)]     [% OF DISK] [OWNER]         [LAST MODIFIED ON]        [FILE] 

56421808           0%           root           2012-08-02 14:58:51       /usr/lib/locale/locale-archive
32464076           0%           root           2008-09-18 18:06:28       /usr/lib/libgcj.so.7rh.0.0
29147136           0%           root           2012-08-02 15:17:40       /var/lib/rpm/Packages
20278904           0%           root           2008-12-09 13:57:01       /usr/lib/xulrunner-1.9/libxul.so
16001944           0%           root           2012-08-02 15:02:36       /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes  [ 0% of Total Disc Space  ]

*** Note: 0% represents less than 1% ***

このスクリプトは非常に便利で便利です。


2
リンク先のWebサイトには指示がありますが、言い換えると外部サイト(とにかく個人的なブログのように見えます)を参照することをお勧めします。これにより、リンクの腐敗を防ぎ、このサイトの
カナダルーク

1
リンクが壊れていますか?
ダニエル

1

各ファイル/ディレクトリのディスク使用率を見つけることは有益ですが、ほとんどの場合、ディスク内の最大のファイル/ディレクトリを知ることで十分です。

だから私のお気に入りはこれです:

# du -a | sort -n -r | head -n 20

出力は次のようになります。

28626644        .
28052128        ./www
28044812        ./www/vhosts
28017860        ./www/vhosts/example.com
23317776        ./www/vhosts/example.com/httpdocs
23295012        ./www/vhosts/example.com/httpdocs/myfolder
23271868        ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576        ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700        ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748        ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852         ./www/vhosts/example.com/stats
4479728         ./www/vhosts/example.com/stats/logs
4437900         ./www/vhosts/example.com/stats/logs/access_log.processed
401848          ./lib
323432          ./lib/mysql
246828          ./lib/mysql/mydatabase
215680          ./www/vhosts/example.com/stats/webstat
182364          ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304          ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144          ./www/vhosts/example.com/httpdocs/tmp/ccc.sql

1

現在のディレクトリとそのサブディレクトリで上位25個のファイルを見つけるには:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

「sort -nr -k5」パイプコマンドを使用して、ファイルのサイズに基づいてソートすることにより、上位25ファイルを出力します。


1

もう1つの代替手段はageduであり、これは最終アクセス時間ごとにディスク容量を分割するため、スペースを浪費しているファイルを見つけやすくなります。

一時的なWebページを提供することにより、X Windowsのないサーバーでも機能するため、グラフを使用して使用状況をリモートで分析できます。サーバーのIPアドレスが192.168.1.101であると仮定すると、サーバーのコマンドラインでこれを入力できます。

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

これにより、ユーザー名、パスワード、URLが出力され、「GUI」にアクセスして結果を閲覧できます。完了したら、サーバー上で終了ageduCtrl+Dます。


0
du -chs /*

ルートディレクトリのリストが表示されます。


0

リストをもう少し完成させるために、お気に入りのディスク使用状況アナライザーを追加しxdiskusageます。

GUIは他の優れたol 'Xユーティリティを覚えています。高速で肥大化していないにもかかわらず、階層内で簡単にナビゲートでき、いくつかの表示オプションがあります。

$ xdiskusage /usr

ここに画像の説明を入力してください


0

次のワンライナーを試してください(現在のディレクトリにある上位20個の最大ファイルを表示します)。

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

または人間が読めるサイズの場合:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

2番目のコマンドは(として適切にOSX / BSD上で動作するsort必要はありません-h)、あなたはインストールする必要がありますsortからcoreutils

したがって、これらのエイリアスはrcファイルに含めると便利です(必要なときはいつでも):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.