Apakah ada cara untuk mengatakan ackhanya mencari teks pada folder saat ini? (atau tentukan max-depthlevel?) Dan dengan grep?
Apakah ada cara untuk mengatakan ackhanya mencari teks pada folder saat ini? (atau tentukan max-depthlevel?) Dan dengan grep?
Jawaban:
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 *
Anda dapat menemukan pasangan dengan argumen -exec. contoh:
find . -maxdepth 1 -exec grep foo {} \;
Ini dapat diskalakan, yaitu -maxdepth 2
-maxdepth 1) cukup besar. Sebagai contoh -maxdepth 2. Saya tidak tahu bagaimana menjelaskan hasil edit yang Anda buat.
-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 ...
.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.
grep -Hindengan pendekatan ini sehingga saya bisa melihat nama file dan garis kejadiannya.
-nuntuk tidak muncul kembali sama sekali.