2014-03-28 14 views
1

我试图用ack搜索foo,但只搜索当前目录中所有的Gemfile文件和所有子目录。用ack中的路径模式搜索很慢

中的所有文件搜索是快疯了:ack foo

但是,这是非常缓慢:ack -g Gemfile | ack -x foo

后者命令需要25秒返回这使得它基本上无法使用。

我做错了吗?如何我搜索只在特定文件中的一项(我知道--ruby--php,但有时你想指定模式youself)

UPDATE

报告在Github上项目这个问题后,修复增加了大型代码库(https://github.com/petdance/ack2/issues/458)加速-g选项。它应该包含在下一个版本(> 2.12)中。

回答

1

如果您正在运行ack 2.x,您可以轻松地为Gemfile创建一个文件类型。

ack --type-add=gemfile:is:Gemfile --gemfile foo 

如果你这样做了很多,你把--type-add=gemfile:is:Gemfile你.ackrc,然后你就可以说

ack --gemfile foo 

依据ACK作者/维护者,我有点担心你的原始管道需要很长时间,如果你有一些时间并愿意将其作为问题提交,那么有人可能会查看原因。 https://github.com/petdance/ack2/issues

+0

感谢您的评论。我不认为我想为Gemfile创建一个文件类型(除非它加快搜索速度),因为我经常想用相同的模式搜索不同的文件,而不仅仅是Gemfile。不过我会在Github中创建一个问题。 :) –

+0

根据您在GitHub上创建的问题https://github.com/petdance/ack2/issues/458,并且我还没有做任何调查,我*认为gemfile类型会加快速度,因为ack应该只看到文件名并说“哦,好吧,我不需要检查其他东西”。 –

+0

好的,现在让我们来处理Github问题,当我们找到解决方案时,我会更新这个问题。 –