ドライブ上の最大のファイルを表示する一連のコマンドを探しています。
ドライブ上の最大のファイルを表示する一連のコマンドを探しています。
回答:
大きなファイルを見つける必要がある場合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ライブラリでディスク使用率を表示することができます。
-ls
ハードコードされた出力(元のコードを参照pred_fls
し、list_file関数)。あなたは使用して出力を近似するために試みることができる-printf
のawkとオプション、後工程の出力を、またはのようなものを使用find ... -type f -exec ls -ldh {} \; | column -t
私はちょうどの組み合わせを使用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
その後、すすぎと繰り返しのケースです。大きすぎると思われるサブディレクトリをターゲットにし、それらのコマンドを実行して、問題の原因を見つけます。
注:du
の-x
フラグを使用して、1つのファイルシステムに制限します(SSDとRAID5の間でクロスマウントされたものを非常に複雑に配置しています)。
注2:2>/dev/null
エラーメッセージを忘却にリダイレクトします。彼らがあなたに迷惑をかけないなら、それは義務ではありません。
du
マニュアルページから:「ディレクトリごとに再帰的に各FILEのディスク使用量を要約します。」
私のお気に入りのソリューションでは、これらの良い回答のいくつかを組み合わせて使用しています。
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
はGNUでsort
のみ使用できるため、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'
これは、次の用途に最適なアプリケーションのようですfind
。
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
このコマンドは、ディレクトリ内のすべてのファイルを見つけて$DIRECTORY
実行ls -s
します。最後のコマンドは、ファイルに割り当てられたサイズとファイル名を出力します。結果は数値順にソートされ、最後の5つのエントリが表示されます。その結果$DIRETORY
、サブディレクトリ内またはサブディレクトリ内で最大の5つのファイルが表示されます。入力tail -n 1
すると、最大のファイルのみが表示されます。
さらに、あなたはでたくさん遊ぶことができますfind
。たとえば、n日未満のファイル(-ctime -n
)または特別なユーザーに属するファイル()を検索できます-user johndoe
。
バオバブを試してみてください。ファイルとフォルダのグラフィカルな概要が表示されます。実際のスペースがどこにあるかを確認し、ワンクリックで削除できます https://help.ubuntu.com/community/Baobab
ファイルをサイズで並べ替えることもできます。
find . -type f -exec du -h {} \; | sort -k1 -h
ファイルのみを検索しdu -h
、すべてのファイルに対して実行し、ファイルのサイズを示します。最後に、find
/ の出力をdu
最初の列に従って(人間が読める形式で)ソートします。
最後に印刷されたファイルが最大です。
このコマンドを使用して、ディレクトリをスキップしながら最大のファイルを表示できます。
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ではありません。混乱した場合はこちらを参照してください):
find / -size +100M -ls
以下のコマンドは、フォルダー内の最大の5つのファイルを表示します$DIRECTORY
。
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