与ACK 2。x,我可以指定命令行选项,以排除某些dirs显示在结果中。例如,要排除目录'test',我可以使用:
ack -v -g 'test' | ack -x pattern
('test'可以是dirs要排除的正则表达式)
我还可以通过将--ignore-dir=save.d
添加到.ackrc或将其用作命令行选项来忽略使用.ackrc的目录。但似乎我不能排除路径(一个目录和它的子目录)使用RegEx。我尝试添加以下内容:
--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和——ignore-file以及ack中的所有文件匹配都是使用正则表达式完成的,不是使用shell glob模式,但我也尝试过使用shell glob模式)
但是这给了我:
Non-is filters are not yet supported for --ignore-dir at /usr/bin/ack line 157
从上面的选项中取出'match:'部分不会产生错误,但也不会排除dirs
手册指出"不支持嵌套目录,如foo/bar "。为了解决这个问题,在ACK上至少到ACK 2.12是不可能排除特定的dirs和子目录的。只能排除dir与简单字符串或正则表达式匹配的所有路径。或者是否有一种未被记录的聪明方法来绕过这个限制?
这个恐怕不支持。看到
·Issue #291·petdance/ack2我来这篇文章是为了类似的事情,发现了上面的问题…: - (