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.
-n
untuk tidak muncul kembali sama sekali.Jawaban:
Gunakan
-n
untukno-recurse
:grep
tidak rekursif secara default, dan Anda harus menggunakan-r
bendera hanya jika Anda ingin pencarian rekursif.Anda dapat mencari direktori saat ini dengan
grep
sebagai berikut:sumber
Anda dapat menemukan pasangan dengan argumen -exec. contoh:
Ini dapat diskalakan, yaitu
-maxdepth 2
sumber
-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 satugrep
per file). Gunakangrep -H foo {} +
(spesifik GNU) ataugrep foo /dev/null {} +
(standar) untuk memastikan nama file selalu dicetak. Setara dengan standar-maxdepth 2
adalahfind . -path './*/*' -type d -prune -o -type f -exec ...
.
karena Anda tidak memberikannya-mindepth 1
) sementara GNUgrep
tidak akan mencoba membaca direktori dengan-r
(itu berulang pada mereka). Anda mungkin ingin menambahkan-d skip
kegrep
(dengan asumsi GNU grep) atau lebih baik menambahkan! -type d
kefind
atau bahkan lebih baik-type f
(atau-xtype f
dengan asumsi GNUfind
) karena Anda mungkin tidak ingingrep
membaca file yang tidak biasa.grep -Hin
dengan pendekatan ini sehingga saya bisa melihat nama file dan garis kejadiannya.