Linux を使わず、Windows を使うようになってからしばらく経ちました。Windows では、ファイルやサブフォルダ内のファイルで文字列を検索したいときはいつでも検索します (たとえば、cs ファイルの場合)
findstr /s /i /n "Thepattern" *.cs
最近、Gitを使うときにインストールされるMINGW64でgrepが使えることを知りました。そこで試してみました。
grep --color -n -r "Thepattern" *.cs
しかし、検索しても-r
サブディレクトリは含まれません。
grep で何が間違っているのでしょうか? また、どうすればよいのでしょうか?
編集: Anaksunaman が正しい答えを教えてくれました:
grep --color -n -r --include=*.cs "Thepattern"
他にもいくつかのオプションがあります :) ありがとうございます!
答え1
Git を使うときにインストールされる MINGW64 で grep が使えることが分かりました。
Git Bash について言及しているものと想定しています。
grep で何が間違っているのでしょうか? また、どうすればよいのでしょうか?
これを試してください:
grep --color -n -r --include=*.cs "ThePattern"
--include=
の後に来る必要があります-r
。これにより、結果が「.cs」で終わるファイルに限定されます。必要に応じてディレクトリを指定することもできます。例:
grep --color -n -r --include=*.cs "ThePattern" ~/some/directory/'with spaces'
この場合、~
Windows 上のユーザー プロファイル フォルダーを参照します。
-i
また、「ThePattern」が文字列リテラルであると仮定すると、大文字と小文字を区別しないようにするために、次のコードを含める必要がある場合があります。
grep --color -n -i -r --include=*.cs "ThePattern"
そうでない場合、「ThePattern」は、例えば「Thepattern」と同じではないため、結果が得られない可能性があります。
いつでも を使用するgrep --help
と、追加オプションに関する情報を取得できることに注意してください。