linux - grep 递归 - 不一致

标签 linux unix recursion grep

我正在从根目录递归地寻找一个特定的字符串(主要在 .c 文件中)。

当我使用它时,我几乎立即得到一个列表。

grep -rl "F_capture" .

但是,如果我试图通过搜索 .c 文件来加快速度:

grep -r --include=*.c "F_capture" .

我最终得到了一系列这样的递归目录警告:

grep: warning: ./sys/block/fd0/device/bus/drivers/i8042/i8042/serio1/input:event1/subsystem/event3/device/bus/drivers/pcnet32/0000:00:03.0/subsystem: recursive directory loop

当我尝试使用 -s 参数抑制警告时,我没有收到警告,但我也没有得到任何回复 - 似乎它永远不会降落。

grep -rsl --include="*.c" "F_capture" .

所以我想我的问题是,为什么我使用的第一个 grep 立即返回一些东西,而我针对特定类型文件的其他类型似乎挂断了。我认为有针对性的搜索会更快。

最佳答案

你可以试试这个:

find . -type f -name "*.c" -print|xargs grep -l "F_capture"

关于linux - grep 递归 - 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24685387/

相关文章:

linux - 如何在 bash 打印字符串中插入 ($x-$y)

shell - 崩溃时退出代码

linux - 如何比较两个 DateTime 字符串并以小时为单位返回差异? ( bash shell )

regex - 使用 -f 选项的 grep 或 fgrep 没有输出不起作用

c++ - 递归的权力

javascript - 使 Ajax 请求递归 - 检查文件是否存在

linux - 如何将所有流量从端口 80 重定向到 Linux 中的调试代理?

Linux 进程访问自己的 DWARF 调试信息?

Linux:使用另一个环境变量的一部分设置环境变量

javascript - 我的递归函数不是无限循环的。为什么?