pos*_*ing 4 command-line directory grep
这是我试图运行的命令。
grep -r "printf" *.c
Run Code Online (Sandbox Code Playgroud)
我试图从.c
我的 cwd 中存在的所有文件中获取所有 printf 行。到目前为止,我的当前目录是 Desktop,并且我.c
在 Desktop 下的子目录中至少有 10-15 个文件,但是此命令根本不显示任何匹配项。那么在这种情况下我该如何进行这项工作呢?
如果你这样做:
grep -r "printf" *.c
Run Code Online (Sandbox Code Playgroud)
shell 将扩展*.c
到.c
以您当前目录结尾的所有文件/目录,如果不存在这样的文件/目录,则该模式将按字面意思处理(大概您没有nullglob
设置)。
正如您所看到的,您当前的模式永远不会在当前目录下,因为您在当前目录中没有任何.c
文件,或者如果有任何文件,它们也没有printf
,导致输出为空。
您只需要使用--include
来搜索选择性文件,并-r
递归遍历:
grep -r --include="*.c" "printf" .
Run Code Online (Sandbox Code Playgroud)
以上将在所有.c
文件中搜索字符串 (pattern) printf
,从当前目录开始递归。
如果您想遵循所有符号链接:
grep -R --include="*.c" "printf" .
Run Code Online (Sandbox Code Playgroud)