使用ACK 2.x,我可以指定命令行选项以排除某些目录显示在结果中。例如,要排除目录' test' I can use:
ack -v -g 'test' | ack -x pattern
(' test'可以是dirs排除的正则表达式)
我也可以ignore a directory using .ackrc,将--ignore-dir=save.d
添加到.ackrc或将其用作命令行选项。但似乎我不能使用RegEx排除路径(dir及其子目录)。我尝试添加以下内容:
--ignore-dir=match:^\/specific\/path\/to\/test\/.*$
以及以下变化
--ignore-dir=match:/^\/specific\/path\/to\/test\/.*$/
--ignore-dir=match:\/specific\/path\/to\/test\/.*
--ignore-dir=match:/specific/path/to/test/.*
--ignore-dir=match:/specific/path/to/test/
(根据这个用户,--ignore-dir and --ignore-file and indeed all file-match in ack is done with regular expressions, not with shell glob patterns,但我也尝试使用shell glob模式。)
但是这给了我:
Non-is filters are not yet supported for --ignore-dir at /usr/bin/ack line 157
取出'匹配:'上述替代方案中的部分不会产生错误,但也不排除目标。
manual表示"嵌套目录如foo / bar不受支持"。为了解决这个问题,至少在ACK 2.12的ACK上,不可能排除特定的目录和子目录。它只能排除dir与简单字符串或正则表达式匹配的所有路径。或者是否有一个无证的聪明方法来解决这个限制?
答案 0 :(得分:1)
这是不受支持的,我很害怕。参见
--ignore-dir doesn't support absolute pathnames · Issue #291 · petdance/ack2
我在这篇文章中找到类似的东西,发现了上述问题......: - (