Gunakan seddengan findalih - alihgrep
Pertama-tama, saya akan mempekerjakan finddaripada grep, dan ini karena tiga alasan bagus:
findmemungkinkan untuk pemilihan file yang lebih tepat. Misalnya, grep -r string *.txtakan menghasilkan file hanya di direktori saat ini; bukan yang ada di subdirektori.
findhadir dengan -execopsi kuat yang menghilangkan kebutuhan untuk keseluruhan --null … |xargs 0konstruksi.
- The
-readabledan -writableopsi findakan mencegah membuang-buang waktu pada file yang tidak dapat diakses.
Tes pengambilan
Yang mengatakan, grepapakah cocok untuk tes pertama untuk melihat apa yang akan ditangkap:
$ find . -exec grep term1 {} \;
atau lebih khusus:
$ find . -type f -name '*.txt' -readable -writable -exec grep term1 {} \;
Lari kering
Sekarang, lanjutkan dengan sedlari kering. The sedpilihan -nadalah sinonim untuk --quietdan pdi akhir dari sedekspresi akan mencetak ruang pola arus.
$ find . -exec sed -n 's/term1/term2/gp' {} \;
atau lebih khusus:
$ find . -type f -name '*.txt' -readable -writable -exec sed -n 's/term1/term2/gp' {} \;
Eksekusi
Jika semuanya terlihat baik-baik saja, keluarkan perintah definitif dengan mengganti sedopsi -ndengan -iuntuk "di tempat" dan dengan menghapus pdi akhir.
$ find . -exec sed -i 's/term1/term2/g' {} \;
atau lebih khusus:
$ find . -type f -name '*.txt' -readable -writable -exec sed -i 's/term1/term2/g' {} \;
Lebih banyak findcontoh
Lebih banyak findcontoh dapat ditemukan di sini .