Saya ingin mencari semua file secara rekursif dari direktori saya untuk string tertentu.
Saya mencoba
grep -r -i my_string
dan saya mencobanya di folder uji dengan dua file kecil tetapi tidak akan menemukan string.
Juga, apakah ada cara khusus untuk mendefinisikan "mengandung" daripada mencocokkan seluruh kata?
grep -r -o -i "your_string" *
(dengan "tanda kutip).Jawaban:
Apakah Anda mencari nama file atau kata di dalam file? grep mencari di dalam file, yang tampaknya seperti yang Anda inginkan.
grep menggunakan ekspresi reguler - pada kenyataannya, itulah yang merupakan bagian dari "re". Jadi, itu tidak menggunakan wildcard bash normal; yaitu,
abc*
tidak akan menemukan kata-kata yang dimulai dengan abc, ia akan menemukan kata-kata yang dimulai dengan ab, kemudian nol atau lebih yang mengikuti c. Tapi ya, jika Anda hanya memberikan pola, itu akan menemukannya di mana saja, tanpa sepengetahuan seluruh kata. Jika Anda ingin menemukan seluruh kata, Anda perlu membuat ekspresi reguler untuk mengatakannya.Tapi, seperti kebanyakan perintah, Anda harus meletakkan nama file di akhir perintah, jadi contoh Anda hanya akan duduk di sana dan menunggu nama file.
Seperti yang dikatakan @plink, gunakan
(atau
*.*
, atau filespec lainnya). Kesalahan bisa diabaikan. Jika Anda mendapatkan banyak kesalahan, Anda dapat menambahkan2>/dev/null
sampai akhir, yang akan mengarahkan stderr ke perangkat nol.sumber