Linux
 Computer >> コンピューター >  >> システム >> Linux

【findコマンド徹底解説】Linuxでファイルやディレクトリを柔軟に検索する方法

【findコマンド徹底解説】Linuxでファイルやディレクトリを柔軟に検索する方法

Linuxのfindコマンドは、Linuxシステムにおいて最も重要かつ便利なコマンドの一つです。その名の通り、自分で設定したさまざまな条件や変数に基づいて、Linuxマシン上のファイルを検索できます。パーミッション、ユーザー、グループ、ファイルタイプ、日付、サイズなど、多彩な条件を組み合わせて目的のファイルを見つけられるのが特徴です。この記事では、findコマンドを使ってLinux上でファイルを検索する方法を詳しく解説します。

findコマンドはほとんどのLinuxディストリビューションにデフォルトで搭載されているため、追加でパッケージをインストールする必要はありません。

カレントディレクトリ内でファイル名から検索する

最も基本的な検索方法は、ファイル名を指定することです。カレントディレクトリ内でファイル名を指定して検索するには、以下のコマンドを実行します。

find . -name photo.png
【findコマンド徹底解説】Linuxでファイルやディレクトリを柔軟に検索する方法

大文字と小文字を区別せずにファイル名で検索したい場合は、-inameオプションを使用します。

find . -iname photo.png
【findコマンド徹底解説】Linuxでファイルやディレクトリを柔軟に検索する方法

ルートディレクトリ全体を対象に検索したい場合は、必要な権限をすべて付与できるよう先頭にsudoを付け、さらにルートディレクトリを意味する「/」記号を指定します。また、末尾に-print式を付けると、検索結果のパスが表示されます。たとえば「gzip」を探す場合は次のように実行します。

sudo find / -name gzip -print
【findコマンド徹底解説】Linuxでファイルやディレクトリを柔軟に検索する方法

特定のディレクトリ配下のファイルを検索する

「/home」など特定のディレクトリ配下にあるファイルを検索したい場合は、以下のように実行します。

find /home -name filename.txt
【findコマンド徹底解説】Linuxでファイルやディレクトリを柔軟に検索する方法

「/home」ディレクトリ配下で拡張子が「.txt」のファイルだけを検索したい場合は、ワイルドカードを使って次のように指定します。

find /home -name "*.txt"
【findコマンド徹底解説】Linuxでファイルやディレクトリを柔軟に検索する方法

「/home」と「/opt」のように複数のディレクトリを対象に、「test.txt」という名前のファイルを検索することもできます。

find /home /opt -name test.txt

「/home」ディレクトリ内の隠しファイル(ドットファイル)を検索するには、以下を実行します。

find /home -name ".*"

「test.txt」という単一のファイルを検索して削除するには、次のコマンドを使用します。

find /home -type f -name test.txt -exec rm -f {} \;

「/opt」ディレクトリ配下の空のファイルをすべて検索するには、以下のようにします。

find /opt -type f -empty

名前を指定してディレクトリを検索する

「/home」ディレクトリ配下で「testdir」という名前のディレクトリをすべて検索するには、-type dオプションを使用します。

find /home -type d -name testdir

「/home」配下の空のディレクトリをすべて検索するには、次のコマンドを実行します。

find /home -type d -empty

特定のパーミッションを持つファイルを検索する

findコマンドでは、-permオプションを使うことで、特定のパーミッションが設定されたファイルを検索できます。

「/home」ディレクトリ内でパーミッションが「777」になっているファイルをすべて検索するには、以下を実行します。

find /home -type f -perm 0777 -print

逆に、パーミッションが「777」ではないファイルをすべて検索するには、感嘆符(!)で条件を否定します。

find . -type f ! -perm 777

読み取り専用のファイルをすべて検索するには、次のようにします。

find /home -perm /u=r

実行可能なファイルをすべて検索するには、以下のコマンドを使用します。

find /home -perm /a=x

スティッキービットが設定され、パーミッションが「553」になっているファイルを検索するには、次のように実行します。

find /home -perm 1553

SUIDが設定されたファイルをすべて検索するには、以下を使用します。

find /home -perm /u=s

パーミッションが「777」のファイルを検索し、そのまま「700」へ変更することもできます。セキュリティ強化の際に非常に便利な使い方です。

find /home -type f -perm 0777 -print -exec chmod 700 {} \;

更新日時やアクセス日時からファイル・ディレクトリを検索する

「/opt」ディレクトリ配下で、20日前に更新(変更)されたファイルをすべて検索するには、以下を実行します。

find /opt -mtime 20

同じく「/opt」配下で、20日前にアクセスされたファイルを検索するには、-atimeオプションを使用します。

find /opt -atime 20

30日以上前に更新され、かつ50日以内に更新されたファイルを検索するには、条件を組み合わせます。

find /opt -mtime +30 -mtime -50

直近2時間以内にステータスが変更されたファイルを検索するには、分単位で指定できる-cminオプションが便利です。

find /opt -cmin -120

ファイルサイズからファイル・ディレクトリを検索する

「/home」ディレクトリ配下で、サイズがちょうど10MBのファイルをすべて検索するには、以下を実行します。

find /home -size 10M

10MBより大きく50MB未満のファイルを検索するには、範囲条件を組み合わせます。

find /home -size +10M -size -50M

「/home」配下でサイズが10MBを超える「.mp4」ファイルを検索し、1つのコマンドでまとめて削除することも可能です。

find /home -type f -name *.mp4 -size +10M -exec rm {} \;

このように、findコマンドはシステム管理、ディレクトリ内のファイル探索、そしてLinuxにおける仮想ディレクトリツリーの整理など、あらゆる場面で非常に役立つ強力なツールです。Linux関連の記事をお探しの場合は、scpコマンドで安全にファイルを転送する方法、ターミナルでnnnをファイラーとして使う方法、壊れたパッケージを修復する方法などの記事もぜひチェックしてみてください。


  1. LinuxでZipファイルを解凍する方法|GUIとコマンドラインの使い方を徹底解説

    Zipファイルは、ダウンロード速度が遅く1バイトでも節約が重要だった時代ほど頻繁には使われなくなりました。それでも今なお広く普及しているファイル形式の一つであり、いずれ開く必要に迫られることもあるでしょう。使用しているディストリビューションにもよりますが、Zipアーカイブの展開自体は比較的簡単です。とはいえ、より高度な操作方法や応用的なテクニックを知っておけば、いざというときにきっと役立ちます。GUIを使ってZipファイルを解凍する多くのLinuxデスクトップ環境では、Zipファイルの解凍は非常に簡単です。ファイルを右クリックすると複数のオプションが表示され、通常は「ここで展開」や「ここに解凍

  2. Windows 10で大容量ファイルを簡単に見つける方法|ストレージ不足を解消する3つの手法

    「ストレージの空き領域が不足しています」という警告が表示され、空き容量を確保するのに苦労していませんか?そのようなときに最も効果的なのが、Windows 10の中にある大容量ファイルを特定することです。どのファイルが不要なのかを正確に把握できれば、それらを削除してストレージ容量を回復できます。 では、PC上の大きなファイルはどうやって探せばよいのでしょうか? 実は、Windows 10で大容量ファイルを見つける方法はいくつかあります。標準搭載のツールを使う方法と、「Disk Analyzer Pro」のようなサードパーティ製アプリを使う方法です。Disk Analyzer Proなら、あっとい