是否可以忽略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标志?
答案 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' .