ag
の場合 、verion 0.19.2 の時点で、デフォルトはディレクトリとファイルを再帰的に検索することです。
複数のパターンを検索するには、ack
と同様の構文を使用できます。
ag 'pattern1|pattern2'
pattern1
の両方を検索します と pattern2
.
再帰的に検索したくない場合は、スイッチ --depth NUM
で検索深度を 1 に設定できます。
したがって、
ag 'pattern1|pattern2' --depth 1
両方のパターンについて、現在のディレクトリでのみ検索します。
これで十分です:
ack -R 'string1|string2'
-R
として がデフォルトです。省略できます:
ack 'string1|string2'
man ack
から :
-r 、-R 、 -- 再帰
サブディレクトリに再帰します。これはデフォルトであり、grep との互換性のためにここにあるだけです。 --no-recurseoff にするためにも使用できます。
/path/to/patterns.file などのファイルからパターンを取得する場合は、次を使用できます。
ack "$(cat /path/to/patterns.file)"
または同等:
ack "$(< /path/to/patterns.file)"
grep -f
に完全に相当するものが見つかりません .
ack コマンドは、パイプと一緒にストリングすることもできます。たとえば、最初の ack は、pattern1 を含むファイルを見つけます。 次に、それを別の ack にパイプして、それらのファイルだけで pattern2 を検索します
ack -l 'pattern1' | ack -x 'pattern2'
-l パラメータは、(一致するテキストではなく)一致するファイルをリストすることを意味します。 -x パラメータは、それにパイプされたファイルだけを検索することを意味します。これは、次の ack 検索のためにファイルを絞り込むことに似ています。
ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'
これは AND です 演算子であり、他のソリューションで指定された OR 演算子ではありません。