Salah satu perintah BASH favorit saya adalah:
find . -name '*.*' -exec grep 'SearchString' {} /dev/null \;
yang mencari konten semua file di dan di bawah direktori saat ini untuk SearchString yang ditentukan. Sebagai seorang pengembang, ini kadang-kadang berguna.
Karena proyek saya saat ini, dan struktur basis kode saya, saya ingin membuat perintah BASH ini lebih maju dengan tidak mencari file apa pun yang ada di atau di bawah direktori yang berisi ".svn", atau file apa pun yang akhiri dengan ".html"
Halaman MAN untuk menemukan agak membingungkan saya. Saya mencoba menggunakan -prune, dan itu memberi saya perilaku aneh. Dalam upaya untuk melewati hanya halaman .html (untuk memulai), saya mencoba:
find . -wholename './*.html' -prune -exec grep 'SearchString' {} /dev/null \;
dan tidak mendapatkan perilaku yang saya harapkan. Saya pikir saya mungkin kehilangan titik-proune. Bisakah kalian membantu saya?
Terima kasih
grep -rl 'SearchString'
find
untuk mencari di dalam file.
-name '*.*'
tidak menemukan semua file: hanya yang dengan .
nama mereka (penggunaan *.*
biasanya adalah DOS-isme, sedangkan di Unix, Anda biasanya menggunakan hanya *
untuk itu). Untuk benar-benar cocok dengan mereka semua, hanya menghapus argumen sama sekali: find . -exec ...
. Atau jika Anda hanya ingin menerapkan grep ke file (dan lewati direktori) maka lakukan find . -type f -exec ...
.
find
bukan perintah built-in bash tetapi program terpisah