我正在尝试在整个服务器中搜索字符串,同时使用ack排除dev /( - R)。到目前为止我已经
了sudo ack -i --ignore-dir=dev * foo
--version ack v1.39
但我收到了一个错误。我哪里错了?
欢迎任何有关此事的帮助或建议
答案 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就可以了。