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でファイルを検索するためのオプションと最適化
find
ignoressymbolicリンクのデフォルト, 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の愛好家できます。
関連する質問: