誰もが、どんなシステムでもストレージ容量が不足し始める瞬間に遭遇したことがあるでしょう。ストレージを追加購入(例えば、高性能SSDなど)するか、それとも検索して最大のファイルを素早く見つけるか?このハウツーでは、ファイルシステムの維持管理に役立つシンプルなアプローチをいくつか紹介します。
この記事で紹介するコマンドは、ほとんどのLinuxマシンで動作します。Ubuntu LTSインストールを使用していますが、Raspberry Piでもこのハウツーを実行できます。ハウツーはすべてターミナル経由で実行します。コマンドラインがまだ開いていない場合は、ほとんどのLinuxマシンでCtrl、Alt、Tキーを押すか、アプリケーションメニューからターミナルアプリを検索することでターミナルウィンドウを開くことができます。
Linux で ls コマンドを使用してファイルをサイズ順に一覧表示する
Linuxでは、 lsコマンドはディレクトリの内容を一覧表示するために使用されます。-lS引数を追加すると、返される結果をファイルサイズ順に並べ替えることができます。このコマンドの動作を説明するために、いくつかのファイルをテストディレクトリにコピーしましたが、任意のディレクトリで実行できます。
ディレクトリの内容をファイルサイズの降順で一覧表示するには、lsコマンドに-IS引数を指定します。リストの上部に大きいファイルが表示され、下部に小さいファイルが表示されます。
ls -lS
このコマンドは確認には便利ですが、ファイルの実際のサイズがわからないため、Linux で最大のファイルを識別してそのサイズを表示するにはどうすればよいでしょうか?
Linuxで指定サイズより大きいファイルを識別する
別の記事では、Linuxでfindコマンドを使ってファイル名またはファイル名の一部に基づいてファイルを検索する方法を説明しました。また、findコマンドを-size引数と組み合わせて使用することで、指定したサイズよりも大きいファイルを返すこともできます。
1. find コマンドを使って、現在のディレクトリにある100MBを超えるファイルを検索します。ここではテストディレクトリ内で作業しており、「.」は現在のディレクトリを検索することを示しています。-type f引数は、結果としてファイルを返すことを指定します。最後に+100M引数は、コマンドが100MBを超えるファイルのみを返すことを指定します。テストフォルダBaby_Yoda.objには、100MBを超えるファイルは1つしかありません。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
find . -type f -size +100M
2.同じコマンドを使用しますが、今回は検索パスを指定します。前のセクションと同じコマンドを実行しますが、「.」を指定したパスに置き換えます。つまり、ホームディレクトリからテストディレクトリを検索できます。
cd
find ./test -type f -size +100M
Linuxファイルシステム全体から大きなファイルを検索する
Linuxファイルシステム全体から大きなファイルを検索すると便利な場合があります。ホームディレクトリに隠れたファイルがあり、削除する必要があるかもしれません。ファイルシステム全体を検索するには、sudoコマンドを使用する必要があります。また、検索対象を現在のファイルシステムに限定したい場合もあります。これは、例えば、探しているファイルが現在のメインファイルシステムにあると思われる場合など、 -xdev引数を使用して実現できます。 -xdev引数を指定しない場合は、接続されたUSBドライブなど、マウントされている他のファイルシステムの結果も含めることができます。
1.ターミナルを開きます。
2.現在のファイルシステムで100MBを超えるファイルを検索します。sudoを使用してルート権限を呼び出すため、パスワードを入力する必要があります。/を使用することで、ファイルシステムのルートからファイルシステム全体を検索するようにコマンドを設定していることに注意してください。
sudo find / -xdev -type f -size +100M
3.すべてのファイルシステムで100MBを超えるファイルを検索します。この例では、100MBを超えるファイルを含む複数のファイルが保存されたUSBドライブを接続します。返された結果をスクロールすると、ペンドライブ上の大きなファイルも結果に含まれていることがわかります。
sudo find / -type f -size +100M
ドライブ上の最も大きな Linux ファイル 10 個を見つける
マシン上の上位10個のファイルまたはディレクトリは何でしょうか?それらのサイズはどれくらいで、どこに保存されているのでしょうか?Linuxのコマンドラインツールを使えば、たった1行のコマンドでこれらのファイルをターゲットにすることができます。
1.ターミナルを開きます。
2. duコマンドを使用してすべてのファイルを検索し、2 つのパイプを使用して返されたデータをフォーマットします。
du -aBM はすべてのファイルとディレクトリを検索し、そのサイズをメガバイト単位で返します。
/はルートディレクトリであり、検索の開始点です。
2>/dev/null は、エラーを /dev/null に送信し、画面にエラーが表示されないようにします。
| sort -nr は、duコマンドの出力をsortの入力として送信し、逆順にリストするパイプです。
| head -n 10 は、検索から返された上位 10 個のファイル/ディレクトリをリストします。
sudo du -aBm / 2>/dev/null | sort -nr | head -n 10
3. Enterキーを押してコマンドを実行します。ファイルシステムのすべてのディレクトリをチェックする必要があるため、実行には少し時間がかかります。完了すると、サイズが最も大きい上位10個のファイル/ディレクトリ、それらのサイズと場所が表示されます。
このコマンド集を使えば、Linuxで大容量ファイルを識別して見つけ出すための複数の方法があります。貴重なシステムリソースを解放するために、大容量ファイルを素早く選択して削除する必要があるときに、この機能は非常に便利です。ただし、ファイルシステムを操作する際は、重要なファイルを削除しないように注意してください。
- Linuxファイルシステムを理解する
- Linuxでディスク使用量を確認する方法
- Linuxでファイルを検索する方法
- Linuxでユーザーを管理する方法