我有一个名为 XYZ 的目录,其中包含目录 ABC、DEF 和 GHI。我想在所有目录中的所有 *.c 文件中搜索模式“writeText”(即 XYZ、XYZ/ABC、XYZ/DEF 和 XYZ/GHI)。 我可以使用什么 grep 命令?
另外,如果我只想在 XYZ、XYZ/ABC 和 XYZ/GHI 中搜索,而不是在 XYZ/DEF 中搜索,我可以使用什么 grep 命令?
谢谢!
注:grep是一种在Unix和类Unix操作系统上用于文本搜索的命令行实用程序。
我有一个名为 XYZ 的目录,其中包含目录 ABC、DEF 和 GHI。我想在所有目录中的所有 *.c 文件中搜索模式“writeText”(即 XYZ、XYZ/ABC、XYZ/DEF 和 XYZ/GHI)。 我可以使用什么 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
是你想要搜索的目录路径。请注意,这些标志适用于GNU grep
,如果你使用BSD/SysV/AIX grep
可能会不同。如果你使用Linux/GNU grep工具,则应该没有问题。
find . -name *.c | xargs grep "writeText"
--recursive
和--include
/--exclude
标志可能是你想要的。 - Wooble