grep在所有目录中

时间:2012-05-17 16:33:10

标签: grep subdirectory

我有一个名为XYZ的目录,里面有ABC,DEF,GHI目录。我想在所有目录中的所有* .c中搜索模式'writeText'(即XYZ,XYZ / ABC,XYZ / DEF和XYZ / GHI) 我可以使用什么grep命令?

另外,如果我只想搜索XYZ,XYZ / ABC,XYZ / GHI而不是XYZ / DEF,我可以使用什么grep命令?

谢谢!

2 个答案:

答案 0 :(得分:34)

grep -R --include="*.c" --exclude-dir={DEF} writeFile /path/to/XYZ
  • -R表示递归,因此会进入您正在浏览的目录的子目录
  • --include="*.c"表示“查找以.c结尾的文件”
  • --exclude-dir={DEF}表示“排除名为DEF的目录。如果要排除多个目录,请执行以下操作:--exclude-dir={DEF,GBA,XYZ}
  • writeFile是您正在寻找的模式
  • /path/to/XYZ是您要浏览的目录的路径。

请注意,这些标志适用于GNU grep,如果您使用的是BSD / SysV / AIX grep,则可能会有所不同。如果您使用的是Linux / GNU grep工具,那么您应该没问题。

答案 1 :(得分:3)

您可以使用以下命令至少回答问题的第一部分。

find . -name *.c | xargs grep "writeText"