FreeBSD 上的 GNU grep 无法正常工作

GNU grep on FreeBSD not working properly

我在使用 grep (GNU grep) 2.5.1-FreeBSD 的 FreeBSD 8.4-STABLE 上遇到了一个奇怪的问题。

如果我尝试 grep -Hnr searchstring 我没有得到任何输出,但是 grep 是 运行 说 ps aux 并保持 运行 直到我终止进程.

如果我在一个空目录中复制一个测试文件并执行

cat testfile | grep searchstring 正在运行。

但如果我尝试 grep -Hnr searchstring 在该目录中我也没有输出,grep keeps 运行 和 运行 但没有产生任何匹配项。

有人知道怎么解决吗?

即使你给了 -r,你仍然必须给 grep 一个文件参数。其他大小,正如您所发现的,它只是坐在那里等待标准输入的输入。

你想要

grep -Hnr searchstring .
# ....................^^

即递归查找当前目录下的文件

虽然似乎没有记录,但如果您使用 -r 选项调用 grep 并且没有文件或目录名称参数,它默认为当前目录,几乎就像您已经输入 grep -R pattern . 除了 ./ 没有出现在输出中。

显然这是一个相当新的功能。

如果您在包含很多内容的目录中执行递归 grep,它可能会花费很长时间——如果有诸如 /dev/zero 之类的设备文件可以生成无限输出。