Untuk ag
, pada versi 0.19.2 standarnya adalah mencari di direktori dan file secara rekursif.
Untuk mencari beberapa pola, Anda dapat menggunakan sintaks serupa sebagai ack
ag 'pattern1|pattern2'
akan mencari pattern1
keduanya dan pattern2
.
Jika Anda tidak ingin mencari secara rekursif, Anda dapat menyetel kedalaman pencarian ke 1 dengan beralih --depth NUM
Oleh karena itu,
ag 'pattern1|pattern2' --depth 1
hanya akan mencari di direktori saat ini untuk kedua pola.
Ini seharusnya cukup:
ack -R 'string1|string2'
Sebagai -R
adalah default, Anda dapat menghilangkannya:
ack 'string1|string2'
Dari man ack
:
-r , -R , --recurse
Recurse ke sub-direktori. Ini adalah default dan hanya di sini untuk kompatibilitas dengan grep. Anda juga dapat menggunakannya untuk mengaktifkan --no-recurseoff.
Jika Anda ingin mendapatkan pola dari sebuah file, katakanlah /path/to/patterns.file, Anda dapat menggunakan:
ack "$(cat /path/to/patterns.file)"
atau sama dengan:
ack "$(< /path/to/patterns.file)"
Saya tidak dapat menemukan padanan yang tepat untuk grep -f
.
Perintah ack juga dapat merangkai bersama dengan pipa. Misalnya ack pertama menemukan file yang berisi pattern1 kemudian kirimkan itu ke ack lain untuk mencari pattern2 file-file itu saja
ack -l 'pattern1' | ack -x 'pattern2'
-l parameter berarti hanya mencantumkan file yang cocok (bukan teks yang cocok). -x parameter berarti mencari hanya file yang disalurkan ke sana. Ini mirip dengan mempersempit file untuk pencarian ack berikutnya.
ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'
Ini adalah DAN operator dan bukan operator ATAU yang diberikan dalam solusi lain.