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.