4

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

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

--version ack v1.39 

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

欢迎就此事提供任何帮助或建议

4

1 回答 1

10

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

其次,您使用的 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。

于 2012-12-12T16:07:56.113 回答