logo

Linux でワイルドカード一致に基づいて現在のフォルダーとサブフォルダー内のすべてのファイルを再帰的に検索する方法

ディレクトリ ツリーをたどってファイルを見つけることは、ほとんどのファイル システム管理ソフトウェアで実行される一般的な操作です。このユーティリティは、ほとんどのオペレーティング システムでコマンド ライン コマンドの形式になっています。この記事では、Linux オペレーティング システムでワイルドカード マッチングを使用してファイルを検索する方法を説明します。

ディレクトリツリー内のファイルを再帰的に検索する

の使用 検索コマンド タスクを実行するために作成されます。コマンド「s」は、ディレクトリ階層内のファイルを検索するために使用されます。 find コマンドのヘルプページは次のとおりです。



find コマンドと -name スイッチは、ディレクトリ内で目的のファイルを検索します。スイッチは、検索する find コマンドの名前 (またはパターン) を提供します。したがって、最終的なコマンドは次のようになります。

find -name 'Re_Pattern'>

ファイル名に Re_Pattern が含まれるファイルが結果として表示されます。パターンには、リテラル文字または一連のワイルドカード式を含めることができます。このようなパターンで使用される 2 つのワイルドカードは次のとおりです。

Javaの文字列を連結する

* => 任意の文字を何度でも (存在しない場合もあります)



? => 1 文字が存在する必要があります

操作が実行されるディレクトリは次のとおりです。

いくつかのファイルとサブディレクトリを含むディレクトリ



簡単にするために、サブディレクトリは空です。したがって、生成された効果は、このディレクトリ内のファイルでのみ表示されます。ディレクトリ内で検索されるファイルは apple となり、そのコマンドは次のようになります。

find -name 'apple'>

ディレクトリ内には apple という名前のファイルが 1 つだけあるため、出力には 1 つの名前だけが表示されます。ただし、* (アスタリスク) などのワイルドカードを含めると、次のようになります。

find -name '*apple*'>

最終的には、名前に apple が含まれるすべてのファイルの結果が得られました。同様に、そのようなワイルドカードを組み合わせて使用​​することもできます。元。名前に 4 文字を含むすべてのファイルを取得したい場合、コマンドは次のようになります。

Javaの部分文字列関数
find -name '????'>

したがって、これら 2 つのワイルドカードを使用すると、複数のファイル名を認識するためのパターンの配列を作成できます。 find コマンドには、出力をさらに合理化できる他のスイッチが含まれています。