GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでファイルを検索するときにディレクトリを除外する方法

Linuxでは、findコマンドを使用して、コマンドラインからファイルまたはフォルダーを検索します。これは複雑なコマンドであり、多数のオプション、引数、およびモードがあります。

検索コマンドの最も一般的な使用法 正規表現または検索する完全なファイル名のいずれかを使用してファイルを検索することです。

[あなたも好きかもしれません:Linuxで特定のテキスト文字列を含むファイルを見つける方法]

たとえば、名前が‘file_’で始まるファイルを検索するには 、実行できます:

$ find . -name 'file_*'

上記のように、検索によって返されるファイルのフルパスが出力されます。ここでは、'.' 現在のディレクトリを意味します 。 Findは、ファイル構造の最も深いレベルまで、現在のディレクトリ、すべてのサブディレクトリなどでファイル名パターンを検索します。同様に、'.'の代わりに他のディレクトリを使用できます。 。

ファイルの検索中にディレクトリを除外する

これで、ユーザーが特定の1つまたは複数のフォルダーに検索対象のファイルが含まれていないことを確認するシナリオが発生する可能性があります。したがって、そのようなフォルダを検索から除外して、コマンドが結果をより速く返すようにすることをお勧めします。

ディレクトリを検索から除外するには、'-prune'を使用します 引数:

$ find . -name './test' -prune -o -name 'file_*'

まず、ここで何が起こっているのかを分析しましょう。

パーツ"-name './test' -prune" 意味:フォルダを除外する「テスト」 検索から。その後、'-o' コマンドに指示します:コマンドが「テスト」を除外したら、他に何をすべきか 。ここでは、前の例で説明したパターンを渡すだけです。

このパターンは、「テスト」を除くすべてのフォルダで実行されるようになります 。

これで、検索でフォルダ「test」が実際に除外されていることがわかります。 。ただし、フォルダ名自体は印刷されています。

検索出力からディレクトリ名を除外する

これを回避するには、'-print'を追加するだけです。 最後に。このオプションは、ディレクトリ名を出力から除外します。

$ find . -name './test' -prune -o -name 'file_*' -print

パターンは現在のディレクトリでファイルを検索し、「テスト」を除外しました。 ディレクトリ。

結論

この記事では、findコマンドを使用してファイルを検索するときにディレクトリを除外する方法について説明しました。この記事の例では、ファイル名('-name')に基づいてファイルを検索していることに注意してください。 。 findコマンド内でファイルを検索する方法は他にもたくさんあります。 検索コマンドのマニュアルページを必ず参照してください。 それらを詳細に調査します。

読んでいただきありがとうございます。下のコメントにフィードバックや質問を残してください。


Linux
  1. コマンドラインでのファイルの検索(ハウツー)

  2. ディレクトリとサブディレクトリ内のファイル数を見つける方法

  3. Linuxでファイルの名前を変更する方法

  1. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  2. Linuxで特定のサイズのファイルをコピーから除外する方法

  3. find でディレクトリを除外する方法。指図

  1. Linuxでfdコマンドを使用してファイルを検索する方法

  2. Linux の find コマンドを使用してファイルを検索する方法

  3. Linuxコマンド:テキストファイルのみを「検索」する方法は?