ドライブ上の最大のファイルを表示する一連のコマンドを探しています。
大きなファイルを見つける必要がある場合は、find
を-size
オプションとともに使用できます。次のコマンドは、10MiBより大きいすべてのファイルをリストします( 10MBと混同しないでください ):
find / -size +10M -ls
特定のサイズのファイルを検索する場合は、「より小さいサイズ」検索と組み合わせて使用できます。次のコマンドは、10MiB〜12MiBのファイルを検索します。
find / -size +10M -size -12M -ls
apt-cache search 'disk usage'
は、ディスク使用量分析に使用できるプログラムをいくつかリストします。非常に有望に見えるアプリケーションの1つはgt5
です。
パッケージの説明から:
年が経ち、ディスクはどんどん大きくなりましたが、この信じられないほど巨大なハードディスクの時代でさえ、スペースは時間とともに消えていくようです。この小さくて効果的なプログラムは、デフォルトのdu(1)よりも便利なリストを提供します。前回の実行以降に発生したことを表示し、dirサイズと合計パーセンテージを表示します。テキストベースのブラウザ(リンク、elink、lynxなど)でカーソルキーを使用して、ディレクトリに移動したり、ディレクトリに移動したりすることができます。
gt5 の「関連パッケージ」セクションで、ncdu
を見つけました。パッケージの説明から:
Ncduは、ncursesベースのduビューアーです。有名なduユーティリティを使用して、高速で使いやすいインターフェイスを提供します。ディレクトリを参照し、ncursesライブラリでディスク使用率を表示することができます。
du
とsort
の組み合わせを使用します。
Sudo du -sx /* 2>/dev/null | sort -n
0 /cdrom
0 /initrd.img
0 /lib64
0 /proc
0 /sys
0 /vmlinuz
4 /lost+found
4 /mnt
4 /nonexistent
4 /selinux
8 /export
36 /media
56 /scratchbox
200 /srv
804 /dev
4884 /root
8052 /bin
8600 /tmp
9136 /sbin
11888 /lib32
23100 /etc
66480 /boot
501072 /web
514516 /lib
984492 /opt
3503984 /var
7956192 /usr
74235656 /home
それはrinse and repeatの場合です。大きすぎると思われるサブディレクトリをターゲットにし、それらのコマンドを実行して、問題の原因を見つけます。
注:du
の-x
フラグを使用して、物事を1つのファイルシステムに制限します(SSDとRAID5の間にクロスマウントされた物の非常に複雑な配置があります)。
注2:2>/dev/null
は、エラーメッセージを忘却にリダイレクトします。彼らがあなたに迷惑をかけないなら、それは義務ではありません。
私のお気に入りのソリューションでは、これらの良い回答のいくつかを組み合わせて使用しています。
du -aBM 2>/dev/null | sort -nr | head -n 50 | more
du
引数:
-a
は「すべて」のファイルとディレクトリを表します。ディレクトリだけはオフのままにします-BM
は、メガバイト(M)ブロックサイズ(B)でサイズを出力します2>/dev/null
-「許可が拒否されました」エラーメッセージを除外します(@Oliに感謝)sort
引数:
-n
は「数値」-r
は「逆」(最大から最小)head
引数:
-n 50
上位50件の結果。more
を省略します注:アカウントにアクセス権限がないディレクトリを含めるには、Sudo
をプレフィックスとして付けます。
/ varの上位10個の最大のファイルとディレクトリを示す例(総計を含む)。
cd /var
Sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M .
6794M ./lib
5902M ./lib/mysql
3987M ./lib/mysql/my_database_dir
1825M ./lib/mysql/my_database_dir/a_big_table.ibd
997M ./lib/mysql/my_database_dir/another_big_table.ibd
657M ./log
629M ./log/Apache2
587M ./log/Apache2/ssl_access.log
273M ./cache
現在のフォルダー内の上位20個のディレクトリを(再帰的に)表示するには、次の1行を使用します。
du -ah . | sort -rh | head -20
または(よりUnix指向):
du -a . | sort -rn | head -20
現在のディレクトリ内の上位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
-h
はGNUsort
でのみ利用可能であることに注意してください。OSX/ BSDで正しく動作させるには、coreutils
からインストールする必要があります。次に、そのフォルダーをPATH
に追加します。
したがって、これらのエイリアスはrcファイルに必要です(必要なときはいつでも):
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
qbiの答えは正しいですが、各アイテムに対して新しいlsプロセスを開始するため、多くのファイルがある場合は非常に遅くなります。
子プロセスを生成せずにfindを使用するより高速なバージョンは、printfを使用してサイズをバイト(%s)およびパス(%p)で出力します
find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries
これは、find
に最適なアプリケーションのようです。
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
このコマンドは、ディレクトリ$DIRECTORY
内のすべてのファイルを検索し、それらに対してls -s
を実行します。最後のコマンドは、ファイルに割り当てられたサイズとファイル名を出力します。結果は数値順にソートされ、最後の5つのエントリが表示されます。その結果、$DIRETORY
または任意のサブディレクトリに最大5つのファイルが表示されます。 tail -n 1
と入力すると、最大のファイルのみが表示されます。
さらに、find
を使用してさまざまな操作を行えます。たとえば、n days(-ctime -n
)よりも新しいファイルや、特別なユーザー(-user johndoe
)に属するファイルを検索できます。
サーバーの空き容量を増やす必要がある場合は、このコマンドを使用します。すべてのファイルが50 MBより大きく、「du -h」がファイルのリストを改善し、パイプがリストをファイルサイズで数値順にソートした後に「sort -n」を見つけます。
find / -size +50M -type f -exec du -h {} \; | sort -n
たとえば、すべてのGBファイルを見つけるには、duとgrepを使用しますが、ここで説明した他の方法も同様に素晴らしいようです。
du -h -a /dir | grep "[0-9]G\b"
また、duにある--exceptオプションを使用することもできます。
Baobabを試してください。ファイルとフォルダの概要がグラフィカルに表示されます。実際の領域がどこにあるかを確認し、ワンクリックで削除できます https://help.ubuntu.com/community/Baobab
コマンドを使用して、ディレクトリをスキップしながら最大のファイルを表示できます。
Sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10
100MiBより大きいすべてのファイルを見つけるには(これは100MBではありません。混乱した場合は here を参照してください):
find / -size +100M -ls
以下のコマンドは、フォルダー$DIRECTORY
内の最大の5つのファイルを表示します。
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
USING du
:duを使用する以下のコマンドは、ホーム作業フォルダー内の20の最大サイズのディレクトリを表示します。
Sudo du -a /home | sort -n -r | head -n 20
ここで、サブフォルダーを含む最大のディレクトリ/ファイルを表示するには、次を実行します。
du -Sh | sort -rh | head -n 10
ls
を使用:
/ binディレクトリ内の上位5つのファイルをリストするには、次のコマンドを発行します。
ls -lSh /bin | head -5
Disk Usage Analyzerまたは Baobao を使用して、たとえば here のように使用することもできます。
ファイルをサイズで並べ替えることもできます。
find . -type f -exec du -h {} \; | sort -k1 -h
ファイルのみを検索し、すべてのファイルに対してdu -h
を実行します。これは、ファイルのサイズを示します。最後に、find
/du
の出力を最初の列(人間が読み取れる形式)に従ってソートします。
最後に印刷されたファイルが最大です。