我有一个名为 XYZ 的目录,其中包含目录 ABC、DEF、GHI。我想在所有目录(即 XYZ、XYZ/ABC、XYZ/DEF 和 XYZ/GHI)的所有 *.c 中搜索模式 'writeText' 我可以使用什么 grep 命令?
另外,如果我只想在 XYZ、XYZ/ABC、XYZ/GHI 而不是 XYZ/DEF 中搜索,我可以使用什么 grep 命令?
谢谢!
我有一个名为 XYZ 的目录,其中包含目录 ABC、DEF、GHI。我想在所有目录(即 XYZ、XYZ/ABC、XYZ/DEF 和 XYZ/GHI)的所有 *.c 中搜索模式 'writeText' 我可以使用什么 grep 命令?
另外,如果我只想在 XYZ、XYZ/ABC、XYZ/GHI 而不是 XYZ/DEF 中搜索,我可以使用什么 grep 命令?
谢谢!
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
是要通过 grep 遍历的目录的路径。请注意,这些标志适用于 GNU grep
,如果您使用的是 BSD/SysV/AIX ,可能会有所不同grep
。如果你使用 Linux/GNU grep utils 你应该没问题。
您可以使用以下命令至少回答问题的第一部分。
find . -name *.c | xargs grep "writeText"