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

ede*_*.io 4 search ack

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

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

--version ack v1.39 
Run Code Online (Sandbox Code Playgroud)

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

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

And*_*ter 10

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

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

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

您不应该为文件名指定"*".让ack为您找到文件.如果"dev"是你正在调用的目录中的一个目录,那么"ack*"将扩展为"ack dev [other directories]",它明确告诉ack在"dev"目录中搜索,这将覆盖--ignore-dir指示.

你应该做的是:

ack -i --ignore-dir=dev foo
Run Code Online (Sandbox Code Playgroud)

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

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