ACK:从搜索中排除特定路径(目录及其子目录)

时间:2014-08-17 11:36:14

标签: regex shell grep ack

使用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与简单字符串或正则表达式匹配的所有路径。或者是否有一个无证的聪明方法来解决这个限制?

1 个答案:

答案 0 :(得分:1)

这是不受支持的,我很害怕。参见

--ignore-dir doesn't support absolute pathnames · Issue #291 · petdance/ack2

我在这篇文章中找到类似的东西,发现了上述问题......: - (