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

ファイル名のパターンとファイルの内容に基づいてファイル名を一覧表示しますか?

grep LMN20113456 LMN2011*

または、サブディレクトリを再帰的に検索する場合:

find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;

find なしで実行できます 同様に、grep の "--include" を使用して オプション。

grep の man ページには次のように書かれています:

--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).

したがって、特定のパターンに一致するファイル内の文字列を再帰的に検索するには、次のようにします:

grep -r --include=<pattern> <string> <directory>

たとえば、すべての Makefile で文字列「mytarget」を再帰的に検索するには:

grep -r --include="Makefile" "mytarget" ./

または、ファイル名が「Make」で始まるすべてのファイルを検索するには:

grep -r --include="Make*" "mytarget" ./

grep は検索に「ワイルドカード」を使用しません。これは、*.jpg のようなシェル グロビングです。Grep は、パターン マッチングに「正規表現」を使用します。シェルでは '*' は「何でも」を意味しますが、grep では「前の項目に 0 回以上一致する」ことを意味します。

詳細と例はこちら:http://www.regular-expressions.info/reference.html

あなたの質問に答えるために - grep でいくつかのパターンに一致するファイルを見つけることができます:

find /somedir -type f -print | grep 'LMN2011' # that will show files whose names contain LMN2011

次に、コンテンツを検索できます (大文字と小文字は区別されません):

find /somedir -type f -print | grep -i 'LMN2011' | xargs grep -i 'LMN20113456'

パスにスペースを含めることができる場合は、「ゼロ エンド」機能を使用する必要があります:

find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'

Linux
  1. Linuxでファイルのパーミッションと所有権を別のファイルにコピーする方法

  2. Stdoutに出力し、同時にGrepをファイルに出力しますか?

  3. ファイル内の複数行パターンを検索するにはどうすればよいですか?

  1. パターンの後にコンテンツをgrepする方法は?

  2. ファイルの cat'ing と grep へのパイプの利点

  3. パターンとファイルの grep ペア

  1. 2つのパターンの間(およびそれを含む)の線を印刷しますか?

  2. パターンに一致する特定のファイルを検索する方法は?

  3. ファイルの内容をエンコードして1行としてエコーしますか?