最大のファイル/ディレクトリを見つけるための Linux ユーティリティ
どのファイル/ディレクトリが一番スペースを占有しているかを表示してくれるプログラムを探しています。
74% music
\- 60% music1
\- 14% music2
12% code
13% other
0x1&
KDE3で可能なのは知っていますが、それはしたくありません - KDE4かコマンドラインがいいでしょう。
どのファイル/ディレクトリが一番スペースを占有しているかを表示してくれるプログラムを探しています。
74% music
\- 60% music1
\- 14% music2
12% code
13% other
0x1&
KDE3で可能なのは知っていますが、それはしたくありません - KDE4かコマンドラインがいいでしょう。
最大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
はスペースの代わりにヌルデリミタを使用し、2つ目の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
``` の例:
0x1&
クイックビューの場合。
du | sort -n
は、最大の最後にある全てのディレクトリをリストアップします。
du --max-depth=1 * | sort -n
または、再び、冗長な * を避けます。
du --max-depth=1 | sort -n
は、カレントディレクトリ内の全てのディレクトリを、最後に一番大きいものをリストアップします。
(最初のフィールドがテキストではなく数値でソートされるようにソートするには -n パラメータが必要ですが、ソートに有効な数値が必要なので、du に -h パラメータを使うことはできません)
その他、シンボリックリンクを辿りたい場合(デフォルトではシンボリックリンクを辿らないようになっています)や、サブディレクトリを除いたディレクトリの内容のサイズだけを表示したい場合など、du の他のパラメータを使用することができます。
ほとんどのことについては、CLIツールの方が好きですが、ドライブの使い方については、 filelight がとても気に入っています。今まで見てきたどのスペース管理ツールよりも直感的に操作できる。
KDEユーザーにとってはFilelightの方が良いのですが、完全性のために(質問のタイトルは一般的なものです)、 Baobab はUbuntu、別名Disk Usage Analyzerに含まれていることに言及しなければなりません。
Unixではコンビネーションが常に最高のトリックです。
du -sk $(find . -type d) | sort -n -k 1
ディレクトリのサイズをKB単位で表示し、最後に一番大きいものを表示するようにソートします。
find . -type d -exec du -sk {} \; | sort -n -k 1
ツリービューではもう少し手間がかかりますが、本当に必要なのでしょうか?
このスキャンはディレクトリ間で入れ子になっているので、上位のディレクトリについては再度サブディレクトリをカウントし、ベースディレクトリ.
は利用率の合計として最後に表示されることに注意してください。
ただし、特定の深さで検索するために検索の深さ制御を使用することができます。
そして、実際にはスキャンにもっと深く関与することができます…あなたが何をしたいかによります。find
と-maxdepth
の-mindepth
の深さ制御は、特定のサブディレクトリの深さに制限することができます。
ここでは、あなたの arg-to-long 問題に対する洗練されたバリエーションがあります
0x1&
私は gt5 が好きです。ツリーをナビゲートしたり、サブディレクトリを開いて詳細を掘り下げることができます。lynxのようなテキストモードのウェブブラウザを使用して結果を表示します。最良の結果を得るためには、 elinks をインストールしてください。
このような入れ子になった出力は得られませんが、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
``` に配管してソートすることができます。
各ファイル/ディレクトリのディスク使用率を知ることは有益ですが、ほとんどの場合、ディスク内の最大のファイル/ディレクトリを知ることで十分です。
# 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
出力は以下のようになります。
0x1&
以下は、このスクリプトを自動的に実行してくれるものです。 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%***
このスクリプトはとても便利で便利です!
もう一つの選択肢として、ageu があります。これは、ディスクスペースを最終アクセス時間で分解し、スペースを無駄にしているファイルを簡単に見つけることができます。
これは、一時的なウェブページを提供することで、X Windowsのないサーバー上でも動作するので、使用状況をグラフでリモートで分析することができます。サーバのIPアドレスが192.168.1.101であると仮定して、サーバのコマンドラインに次のように入力します
agedu -s / -w --address 192.168.1.101:60870 --auth basic -R
これでユーザ名、パスワード、URLが表示され、"GUI “にアクセスして結果を閲覧することができます。終わったら、サーバー上でagedu
でCtrl+D
を終了させます。
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
または人間が読めるサイズで以下のワンライナーを試してみてください(カレントディレクトリ内の最大ファイルの上位20個を表示)。
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
OSX/BSD で正しく動作するための 2 番目のコマンド (
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'