Pro ag
, od verze 0.19.2 je výchozí rekurzivní vyhledávání v adresářích a souborech.
Chcete-li hledat více vzorů, můžete použít podobnou syntaxi jako ack
ag 'pattern1|pattern2'
bude hledat obě pattern1
a pattern2
.
V případě, že nechcete vyhledávat rekurzivně, můžete nastavit hloubku hledání na 1 pomocí přepínače --depth NUM
Proto,
ag 'pattern1|pattern2' --depth 1
bude hledat pouze v aktuálním adresáři oba vzory.
To by mělo stačit:
ack -R 'string1|string2'
Jako -R
je výchozí, můžete jej vynechat:
ack 'string1|string2'
Od man ack
:
-r , -R , --recurse
Návrat do podadresářů. Toto je výchozí a pouze zde pro kompatibilitu s grep. Můžete jej také použít pro vypnutí --no-recurseoff.
Pokud chcete získat vzor ze souboru, řekněme /path/to/patterns.file, můžete použít:
ack "$(cat /path/to/patterns.file)"
nebo ekvivalentně:
ack "$(< /path/to/patterns.file)"
Nemohu najít přesný ekvivalent grep -f
.
Příkaz ack může také řetězit spolu s rourami. Například první ack najde soubory obsahující vzor1 pak to přesměrujte do jiného potvrzení a vyhledejte vzor2 pouze v těchto souborech
ack -l 'pattern1' | ack -x 'pattern2'
-l parametr znamená pouze vypsat odpovídající soubory (místo shodného textu). -x parametr znamená hledat pouze soubory, které jsou k němu připojeny. Je to podobné jako zúžení souborů pro další hledání potvrzení.
ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'
Toto je A operátor a ne operátor OR uvedený v jiných řešeních.