确认 - 忽略多个目录而不重复标记

时间:2013-12-16 17:15:04

标签: ack

是否可以忽略Ack中的多个目录,而不重复标记?

e.g。我知道以下有效(即设置多个标志):

ack --ignore-dir=install --ignore-dir=php 'teststring'

我希望我可以用逗号分隔目录,就像我可以使用扩展程序一样:

ack --ignore-file=ext:css,scss,orig 'teststring'

但是,以下逗号分隔的忽略标志不起作用:

ack --ignore-dir=install,php 'textstring'

是否可以使用一些短手等效,所以我不必重复输入--ignore-dir标志?

4 个答案:

答案 0 :(得分:40)

它实际上类似于为grep指定包含模式的方式:

ack <term> --ignore-dir={dir_a,dir_b}

但是,此格式不适用于单个目录。所以

ack <term> --ignore-dir={log}

无效。

答案 1 :(得分:16)

由于您使用的是ack 2,因此可以将--ignore-dir=install--ignore-dir=php放在项目根目录中的.ackrc文件中。然后,该树中的每个ack调用都将使用这些标志。

答案 2 :(得分:10)

所以要忽略单个目录的使用

ack <term> --ignore-dir=dir_a

并忽略多个目录使用

ack <term> --ignore-dir={dir_a,dir_b}

答案 3 :(得分:0)

一种方法可能是选择要在-G选项中使用正则表达式排除的目录,并使用选项--invert-file-match补充。根据您的问题,如下所示:

ack -a -G 'install|php' --invert-file-match 'textstring' .