web-dev-qa-db-ja.com

Ack —フラグを繰り返さずに複数のディレクトリを無視する

フラグを繰り返さずに、Ackで複数のディレクトリを無視することは可能ですか?

例えば私は次のことを知っていますworks(つまり、複数のフラグを設定します):

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

ディレクトリをコンマで区切って、次のように拡張子でできることを望んでいました。

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

ただし、次のカンマ区切りの無視フラグは機能しません。

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

同等の省略形を使用することは可能ですか?--ignore-dirフラグを繰り返し入力する必要はありませんか?

33
SparrwHawk

実際には、grepのインクルードパターンを指定する方法と似ています。

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

ただし、この形式は単一のディレクトリでは機能しません。そう

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

動作しないでしょう。

43
Mandar Pathak

Ack 2を使用しているので、--ignore-dir=installおよび--ignore-dir=phpは、プロジェクトのルートにある.ackrcファイルにあります。その後、そのツリーのすべてのack呼び出しはそれらのフラグを使用します。

17
Andy Lester

したがって、単一のディレクトリの使用を無視するには

ack <term> --ignore-dir=dir_a

複数のディレクトリを無視するには

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

1つのアプローチは、-Gオプションで補完された--invert-file-matchオプションの正規表現を使用して、除外するディレクトリを選択することです。あなたの質問に基づいて、次のようなもの:

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