web-dev-qa-db-ja.com

すべてのディレクトリのgrep

私はその中にABC、DEF、GHIというディレクトリを持つXYZという名前のディレクトリを持っています。すべてのディレクトリ(つまり、XYZ、XYZ/ABC、XYZ/DEF、XYZ/GHI)のすべての* .cでパターン 'writeText'を検索したいのですが、どのgrepコマンドを使用できますか?

また、XYZ/DEFではなく、XYZ、XYZ/ABC、XYZ/GHIのみを検索する場合、どのgrepコマンドを使用できますか?

ありがとうございました!

19
Romonov
grep -R --include="*.c" --exclude-dir={DEF} writeFile /path/to/XYZ
  • -Rは再帰を意味するため、grepを実行しているディレクトリのサブディレクトリに移動します
  • --include="*.c"は、「.cで終わるファイルを探す」を意味します
  • --exclude-dir={DEF}は、「DEFという名前のディレクトリを除外します。複数のディレクトリを除外する場合は、次のようにします:--exclude-dir={DEF,GBA,XYZ}
  • writeFileは、模索しているパターンです
  • /path/to/XYZは、grepを実行するディレクトリへのパスです。

これらのフラグはGNU grepに適用されますが、BSD/SysV/AIX grepを使用している場合は異なる場合があります。Linux/を使用している場合GNU grep utilsなら大丈夫です。

35
wkl

次のコマンドを使用して、少なくとも質問の最初の部分に答えることができます。

find . -name *.c | xargs grep "writeText"
3
Hakan Serce