ファイルを検索する (find コマンド)

find コマンドを使用して、指定された各 Pathのディレクトリー・ツリーを再帰的に検索し、以下のテキストに示されている用語を使用して記述されたブール式に一致するファイルを探します。

find コマンドからの出力は、 Expression パラメーターで指定された用語によって異なります。

find コマンドの 使用例を以下に示します。
  • ファイルシステム内の、.profile という名前のファイルをすべてリストするには、次のように入力します。
    find / -name .profile
    これにより、 ファイルシステム全体が検索され、.profile という名前のファイルすべての完全パス名が書き込まれます。 スラッシュ (/) は、find コマンド に /(root) ディレクトリーとそのすべてのサブディレクトリーの検索を指示します。

    時間を節約するために、ファイルがあると 考えられるディレクトリーを指定することによって、検索の範囲を制限します。

  • カレント・ディレクトリーとそのサブディレクトリーすべてにおいて、「testファイル名を持つすべてのファイルの大文字小文字を区別しない検索を実行するには、次のコマンドを入力する:
    find . -iname test
  • 現行ディレクトリー・ツリー内で、特定のアクセス権コード 0600 を持つファイルをリストするには、次のように入力します。
    find . -perm 0600
    これに より、所有者読み取りと所有者書き込みの許可のみ を持つファイルの名前をリストすることができます。 ドット (.) では、find コマンドに、 現行ディレクトリーとそのサブディレクトリーの検索を指示します。 アクセス権コードの説明については、chmod コマンドを参照してください。
  • 複数のディレクトリー内で、特定のアクセス権コードを持つファイルを検索するには、次のように入力します。
    find manual clients proposals -perm -0600
    これにより、 所有者読み取りと所有者書き込みの許可に加え、ほかの許可も持つファイルの名前がリストされます。 manualclients、および proposals の各ディレクトリーおよびそのサブディレクトリーが検索されます。 前の例で示したように、-perm 0600 は、 0600 と正確に一致する許可コードの付いたファイルのみを選択します。 この例では、-perm -0600 を指定すると、0600 で示されるアクセスが可能 なアクセス権コードを持つファイルと、0600 レベルより上の、ほかのアクセスが可能なアクセス権コー ドを持つファイルが選択されます。 この場合は、アクセス権コード 0622 と 2744 も一致しています。
  • 現行ディレクトリー内の、現在までの 24 時間以内に変更されたファイルをすべてリストするには、次のように入力します。
    find . -ctime 1 
  • 複数のリンクを持つ正規ファイルを検索するには、次のように入力します。
    find . -type f -links +1
    これにより、複数のリンク ((-links +1) を持つ、通常ファイル (-type f) の 名前がリストされます。
    注: 各ディレクトリーには、少なくとも 2 つのリンクがあります。親ディレクトリー内のエントリーとそれ自体の .(ドット) エントリーです。 複数のファイル・リンクについて詳しくは、 ln コマンドを参照してください。
  • ちょうど 414 バイトの長さのファイルをすべて検索するには、次のように入力します。
    find . -size 414c 
  • ルート・ディレクトリとそのサブディレクトリにある、ファイル名に文字列 「main」が含まれ、拡張子がアルファベット「o」で終わる任意の長さのファ イルを大文字小文字を区別せずに検索するには、次のコマンドを入力する:
    find / -iname "*main*.*o"
    このコマンドの検索結果は、'main.o、'app_main.c.o、'mAin.O、'APP_MAIN.oのようなファイルを返します。
  • ルート・ディレクトリとそのサブ・ディレクトリにある、ファイル名に 「main文字列が含まれ、1文字の拡張子を持つすべてのファ イルについて、大文字と小文字を区別しない検索を行うには、次のコマンドを 入力する:
    find / -iname "*main*.?"
    このコマンドの検索結果は、'main.c、'app_main.o、'MAIN.c、'App_main.oのようなファイルを返します。
  • ルート・ディレクトリとそのサブ・ディレクトリにある、拡張子が「.T で、その後に任意の1文字が続き、アルファベットが「tであるすべての ファイルについて、大文字と小文字を区別しない検索を行うには、以下のコマンドを 入力する:
    find / -iname "*.T?t"
    このコマンドの検索結果は、'file.T1t、'log.Tot、'file.txt、'log.tot、または'log.toTのようなファイルを返します。
  • ルート・ディレクトリとそのサブ・ディレクトリにある、拡張子が「.Sh、「.md、「.Sd、「.mhいずれかであるすべてのファイルについて、大文字と小文字を区別しない検索を実行するには、次のコマンドを入力する:
    find / -iname "*.[Sm][hd]"
    このコマンドの検索結果は、'readme.sh、'logo.md、'logo.sd、'readme.mh、'readme.SH、または'logo.mDのようなファイルを返します。