文件中的Cygwin'grep'需要永远


1

我尝试使用Cygwin来模拟一些很酷的Linux搜索功能,当我在文件中执行grep(12个文本文件 - 不大)时,它需要永远。我用了

grep -rne word

我可以手动更快地找到这个词(即使没有Ctrl+ F)。有什么理由不起作用吗?怎么解决?

PS:我使用Cygwin控制台。


尝试grep -rne字*这*不应该是必要的,但它对我

Answers:


5

你忘了告诉grep 在哪里搜索,所以它只是坐在那里等待从'stdin'输入数据 - 通常是管道,但在这种情况下你的键盘。您可以通过输入类似“确认this is a wordEnterCtrlZEnter

如果要以递归方式搜索当前目录,.请将其作为路径。

grep -rne字

(注意2012-07:如果给出,最新版本的GNU grep将自动搜索当前目录-r。)


在许多情况下,*也会起作用,但不推荐使用1)它效率低 - 将通配符扩展到所有文件名需要一些时间,甚至可能溢出允许的命令行长度; 2)它与大多数shell中的dotfiles(以点开头的名称)不匹配,虽然我不确定这是否适用于Cygwin本身完成的扩展。


通配符的扩展由shell处理,Cygwin默认使用bash。它的工作方式与Linux或Unix系统相同。
Keith Thompson

1
小心。 grep -rne word . > grep.out将包含grep.out在被搜索的文件中,并将一直运行,直到您的磁盘空间不足。
Keith Thompson

1
@Keith:Cygwin程序也可以从cmd.exePowerShell和PowerShell 运行,在这种情况下,扩展必须由程序本身(或Cygwin运行时)完成。
grawity 2011年

@grawity是的,如果从Cygwin外部调用Cygwin程序,Cygwin DLL就会这样做。
ak2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.