Saya mencoba menemukan cara untuk memindai seluruh sistem Linux saya untuk semua file yang berisi string teks tertentu. Hanya untuk memperjelas, saya mencari teks di dalam file, bukan dalam nama file.
Ketika saya mencari cara untuk melakukan ini, saya menemukan solusi ini dua kali:
find / -type f -exec grep -H 'text-to-find-here' {} \;
Namun, itu tidak berhasil. Tampaknya menampilkan setiap file dalam sistem.
Apakah ini dekat dengan cara yang tepat untuk melakukannya? Jika tidak, bagaimana seharusnya saya? Kemampuan ini untuk menemukan string teks dalam file akan sangat berguna untuk beberapa proyek pemrograman yang saya lakukan.
-H
dengan -l
(dan mungkin grep
dengan fgrep
). Untuk mengecualikan file dengan pola nama tertentu yang akan Anda gunakan find
dengan cara yang lebih maju. find
Meskipun demikian, ada baiknya belajar menggunakan . Adil man find
.
find … -exec <cmd> +
lebih mudah untuk mengetik dan lebih cepat daripada find … -exec <cmd> \;
. Ini hanya berfungsi jika <cmd>
menerima sejumlah argumen nama file. Penghematan waktu eksekusi sangat besar jika <cmd>
lambat untuk memulai seperti skrip Python atau Ruby.
grep "pattern" path/*.txt
.
sebagai wildcard satu karakter, antara lain. Saran saya adalah selalu gunakan fgrep atau egrep.