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'