我在使用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一直在运行和运行,但没有产生任何匹配。
有人知道如何解决这个问题吗?
答案 0 :(得分:4)
即使你给了-r
,你仍然需要给grep一个文件参数。正如你所发现的那样,其他人只是坐在那里等待stdin的输入。
你想要
grep -Hnr searchstring .
# ....................^^
这将以递归方式查找当前目录下的文件。
答案 1 :(得分:1)
虽然似乎没有记录,但如果使用grep
选项调用-r
且没有文件或目录名参数,则默认为当前目录,几乎就像您键入的一样grep -R pattern .
,但./
未出现在输出中。
显然这是一个相当新的功能。
如果在具有大量内容的目录中执行递归grep
,则可能需要很长时间 - 如果有/dev/zero
等设备文件可以产生无限输出,则可能永远存在