Bagaimana cara melakukan pencarian max-depth di ack dan grep?


32

Apakah ada cara untuk mengatakan ackhanya mencari teks pada folder saat ini? (atau tentukan max-depthlevel?) Dan dengan grep?


1
Tidak, ack tidak memiliki opsi kedalaman maksimal, selain -nuntuk tidak muncul kembali sama sekali.
Andy Lester

Jawaban:


22

Gunakan -nuntuk no-recurse:

$ ack -n foo

greptidak rekursif secara default, dan Anda harus menggunakan -rbendera hanya jika Anda ingin pencarian rekursif.

Anda dapat mencari direktori saat ini dengan grepsebagai berikut:

$ grep -- foo *

13
Tidak menjawab pertanyaan? (bagaimana jika saya ingin mengulang kembali ke kedalaman 2)
Steven Lu

Poin bagus, saya melewatkan itu. Ada saran?
Eric Wilson

29

Anda dapat menemukan pasangan dengan argumen -exec. contoh:

find . -maxdepth 1 -exec grep foo {} \;

Ini dapat diskalakan, yaitu -maxdepth 2


Stephane, jawaban saya ( -maxdepth 1) cukup besar. Sebagai contoh -maxdepth 2. Saya tidak tahu bagaimana menjelaskan hasil edit yang Anda buat.
David Wilkins

itu tidak akan mencapai @stephane jika Anda tidak menggunakan @.
Braiam

4
Ya maaf, saya setuju hasil edit saya terlalu mengganggu. Anda mungkin masih ingin mengklarifikasi bahwa ( -maxdepth) bukan sintaksis portable / standar (hanya GNU dan beberapa BSD). Juga, tidak ada gunanya menggunakan di \;sini (jalankan satu grepper file). Gunakan grep -H foo {} +(spesifik GNU) atau grep foo /dev/null {} +(standar) untuk memastikan nama file selalu dicetak. Setara dengan standar -maxdepth 2adalahfind . -path './*/*' -type d -prune -o -type f -exec ...
Stéphane Chazelas

2
Perhatikan juga bahwa Anda akan memberikan pesan kesalahan untuk direktori (termasuk .karena Anda tidak memberikannya -mindepth 1) sementara GNU greptidak akan mencoba membaca direktori dengan -r(itu berulang pada mereka). Anda mungkin ingin menambahkan -d skipke grep(dengan asumsi GNU grep) atau lebih baik menambahkan ! -type dke findatau bahkan lebih baik -type f(atau -xtype fdengan asumsi GNU find) karena Anda mungkin tidak ingin grepmembaca file yang tidak biasa.
Stéphane Chazelas

4
Saya cenderung menggunakan grep -Hindengan pendekatan ini sehingga saya bisa melihat nama file dan garis kejadiannya.
GDP2
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.