FreeBSD上的GNU grep无法正常工作

时间:2015-10-22 15:31:56

标签: linux shell grep freebsd

我在使用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一直在运行和运行,但没有产生任何匹配。

有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

即使你给了-r,你仍然需要给grep一个文件参数。正如你所发现的那样,其他人只是坐在那里等待stdin的输入。

你想要

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

这将以递归方式查找当前目录下的文件。

答案 1 :(得分:1)

虽然似乎没有记录,但如果使用grep选项调用-r且没有文件或目录名参数,则默认为当前目录,几乎就像您键入的一样grep -R pattern .,但./未出现在输出中。

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

如果在具有大量内容的目录中执行递归grep,则可能需要很长时间 - 如果有/dev/zero等设备文件可以产生无限输出,则可能永远存在