たくさんのファイルがあり、どこにあるか知りたいですMYVAR
。
.ymlファイルの1つにあると確信していますがgrep
、ファイルタイプを指定する方法がマニュアルに見つかりません。
grep -rn --include=*.yml "MYVAR" your_directory
grepはデフォルトで大文字と小文字を区別し(大文字と小文字を無視するように-iを渡す)、文字列だけでなく正規表現も受け入れることに注意してください。
grepにファイルタイプを指定するのではなく、ファイルのリストだけを指定します。ただし、シェルはパターンを拡張して、grepにファイルの正しいリストを与えることができます。
$ grep MYVAR *.yml
ファイルがすべて1つのディレクトリにない場合.yml
は、アンティを上げて使用する方が簡単な場合がありますfind
。
$ find -name '*.yml' -exec grep MYVAR {} \+
これにより、現在のディレクトリから再帰的に深く、.ymlで終わるファイルがすべて検出されます。次に、そのファイルのリストを中括弧のペアに置き換えます{}
。末尾は、スイッチが終了したことを\+
示す特別なfind
区切り文字にすぎません。-exec
その結果、ファイルのリストが照合され、grepに渡されます。
find . -name \*.yml -exec grep -Hn MYVAR {} \;
すべての.ymlファイルが1つのディレクトリにある場合は、そのディレクトリにcdしてから、...
grep MYWAR *.yml
すべての.ymlファイルが複数のディレクトリにある場合は、それらのディレクトリの先頭にcdしてから、...
grep MYWAR `find . -name \*.yml`
.ymlファイルが配置されているディレクトリの先頭がわからず、システム全体を検索したい場合...
grep MYWAR `find / -name \*.yml`
最後のオプションでは、すべてのディレクトリを読み取るためにroot権限が必要になる場合があります。
上記の`文字は、キーボードの〜キーと一緒に配置されている文字です。