findは、単純な条件付きメカニズムに基づいて、ファイルシステム内のオブジェクトを再帰的にフィルタリングするためのコマンドです。 ファイルシステム上のファイルまたはディレクトリを検索するには、findを使用します。 -execフラグを使用すると、同じコマンド内でファイルを見つけてすぐに処理できます。,

Find Linux Files by Name or Extension
Use find from the command line to locate a specific file by name or extension., 次の例では、*.err/home/username/ディレクトリ内のファイルとすべてのサブディレクトリを検索します。
find /home/username/ -name "*.err"
コンソールにも同様の出力が表示されます。
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
一般的なLinuxコマンドと構文を検索
findコマンドは通常、次の形式をとります。
find options starting/path expression
options属性は、findプロセスの動作と最適化方法を制御します。,starting/path属性は、findがフィルタリングを開始するトップレベルディレクトリを定義します。expression属性は、出力を生成するためにディレクトリ階層を検索するテストを制御します。li>
Linuxでファイル名を使用してファイルを検索する
ファイル名を使用してファイルを検索するには、構文を使用しますfind -name filename。 パスを省略すると、ディスク全体にわたってファイルが検索されます。, たとえば、example.err/home/usernameディレクトリにあるファイルを次のコマンドで見つけることができます。
find -name example.err
同様の出力が表示されます。
./username/example.err
Findコマンドを使用してカレントディレクトリ内のファイルを見つける
ディレクトリ構造とファイルの例を見てみましょう。 これらは、このガイドの例全体で参照されています。,ファイルを見つけたいexample.errディレクトリまたはそのサブディレクトリのいずれか内で、次のコマンドを発行できます。
find . -name example.err
出力は次のようになります。
./example.err./directory_1/example.err
出力はdirectory_1ディレクトリ構造:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
コマンドラインを使用してlinuxでイメージファイルを検索
ファイル構造を参照する前のセクションでは、ディレクトリ構造のルート(/)にあるimage01.pngという名前のイメージがあります。,
ファイルimage01.pngを見つけるには、次のfindコマンドを実行して、すべての.png/ディレクトリ内に格納されているファイルを検索します。
find -name *.png
同様の出力が表示されます:
./image01.png
画像ファイルの種類を変更し、.jpgルートディレクトリ内のファイル(/):
find -name *.jpg
出力はこの例に似ています。, 例をご参照ディレクトリ構造は、前項のファイルの場所です。
./web_files/unnamed.jpg
コマンドラインを使用してディレクトリ内の空のファイルを見つける
コマンドラインを使用してディレクトリ内の空のファイルを見つけるには、次のコマンドを発行します。
find . -type f -empty
出力が返されない場合、現在のディレクトリ内に空のファイルはありません。
コマンドラインを使用してLinuxでファイルを検索するためのオプションと最適化
findignoressymbolicリンクのデフォルト, findがシンボリックリンクをたどって返すようにするには、次のように-Lオプションをコマンドに追加します。
find -O3 -L /var/www/ -name "*.html"
このコマンドは最大最optimizationレベル(-O3)を有効にし、findシンボリックリンクをたどる(-L)。 findは、/var/www/の下のディレクトリツリー全体を検索し、.htmlで終わるファイルを検索します。,
findパフォーマンスを向上させるために、そのフィルタリング戦略を最適化します。 ユーザーが選択可能な最適化レベルは、-O1、-O2、および-O3として指定されます。 -O1最適化がデフォルトであり、他のすべてのテストを実行する前に、findファイル名に基づいてフィルタ,
-O2レベルでの最適化は、-O1のように、ファイル名フィルターの優先順位を付け、その後、すべてのファイルタイプフィルター Level-O3最適化により、findは最も厳しい最適化を実行し、相対的な費用と成功の可能性に基づいてすべてのテストを並べ替,
| Command | Description |
|---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
許可find自動的にリソースと可能性の効率的な使用に基づいて検索を並べ替えます。 成功の |
-maxdepth X |
現在のディレクトリだけでなく、すべてのサブディレクトリXレベルの深さを検索します。 |
-iname |
テキストケースに関係なく検索します。, |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
コマンドラインを使用した変更時刻によるLinux内のファイルの検索
findコマンドは、ファイルが最後に変更されたときに基づいてディレクトリ階層をフィルタリングすることができます。, たとえば、次のコマンドは、過去7日間に変更された.err拡張子を持つファイルを検索します。
find / -name "*err" -mtime -7
コマンド例では、次の出力を返します。
Grepを使用して、コマンドラインを使用してLinuxでファイルを検索します
findコマンドは、ディレクトリ階層のみをフィルタリングできますファイルの名前とメタデータに基づきます。 ファイルの内容に基づいて検索する必要がある場合は、次のようなツールを使用してくださいグレップ。, 次の例を考えてみましょう。
find . -type f -exec grep "test" '{}' \; -print
このコマンドは、現在のディレクトリ階層内のすべてのオブジェクト(.)、つまりファイル(-type f)を検索し、条件を満たすすべてのファイルについてgrep "test"コマンドを実行します。 一致するファイルが画面に印刷されます(-print)。 中括弧({})は、一致の検索結果のプレースホルダーです。, {}は、'grep不正な形式のファイル名を渡さないように、一重引quotes(')で囲まれています。 -execコマンドはセミコロン(;)で終了し、シェルによる解釈を避けるためにエスケープする必要があります(\;)。この例で使用されているファイル(example.err)には、”test”というテキストが含まれています。, Exampleコマンドを実行すると、同様の出力が表示されます。
Grepは、文字列”test”を含む現在の作業ディレクトリ内のすべてのファイルを識別しました。,
注
findコマンドの-execオプションの実装の前に、xargsコマンドを使用して、上記の例と同様の出力を生成できます。find . -type f -print | xargs grep "test"
linuxのfindコマンドを使用してファイルを処理して検索します
-execオプションは、find式に一致するすべてのオブジェクトに対してコマンドを実行します。,
find . -name "example.err" -exec chmod o+r '{}' \;
現在の階層内のすべてのオブジェクト(.)をrc.confという名前のファイルに対してフィルタリングし、chmod o+rコマンドを実行してfindコマンドのファイル権限を変更します結果。
サンプルコマンドは、-execプロセスのルートディレクトリ内のfindオプションを実行して実行します。 -execdirを使用して、一致が存在するディレクトリで指定されたコマンドを実行します。, この緩和に関するセキュリティ上の懸念をより一部の業務です。
-execまたは-execdirオプションは、それ以上のプロンプトなしで実行されます。 アクションを実行する前にプロンプトを表示する場合は、-execを-okまたは-execdirを-okdirに置き換えます。
Linuxコマンドラインを使用してファイルを検索および削除する方法
注意
このオプションは細心の注意を払って使用し,
オプション-deleteを一致式の最後に追加して、一致するすべてのファイルを削除します。 このオプションは、結果が削除するファイルのみと一致することが確実な場合に使用します。
以下の例では、find現在のディレクトリから始まる階層内のすべてのファイルを再帰的に検索し、.err拡張子
find . -name "*.err" -delete
まだいくつかの質問がありますか?,
にてご参加後のご質問にその他のLinodeとLinuxの愛好家できます。
関連する質問: