为什么我的ack--ignore-dir不起作用?

时间:2012-12-12 12:46:14

标签: search ack

我正在尝试在整个服务器中搜索字符串,同时使用ack排除dev /( - R)。到目前为止我已经

sudo ack -i --ignore-dir=dev * foo

--version ack v1.39 

但我收到了一个错误。我哪里错了?

欢迎任何有关此事的帮助或建议

1 个答案:

答案 0 :(得分:10)

首先,每当你说'#34;我收到错误"时,请将其更改为"我收到以下错误"然后告诉我们错误是什么。错误对于我们能够帮助诊断问题非常重要。

其次,您使用的ack版本非常陈旧。最新的是1.96。

第三,你的论点乱了。你正在寻找" foo",对吧?然后你应该做" ack foo *",而不是" ack * foo"。

你不应该指定" *"对于文件名。让ack为您找到文件。如果" dev"是您要拨打的目录中的目录,然后是" ack *"将扩展到" ack dev [其他目录]",这明确告诉ack在" dev"中搜索目录,它覆盖--ignore-dir指令。

你应该做的是:

ack -i --ignore-dir=dev foo

然后你让ack做文件查找。您只应在命令行中指定文件名,如果由于某种原因您必须覆盖ack找到的文件。

最后,你可能不应该首先使用ack来完成这项任务。 ack专门用于搜索源代码,它不会搜索它不考虑源代码的文件。如果您正在搜索整个服务器,那么您可能也想要搜索非源代码文件,对吧?使用grep就可以了。