Gunakan sed
dengan find
alih - alihgrep
Pertama-tama, saya akan mempekerjakan find
daripada grep
, dan ini karena tiga alasan bagus:
find
memungkinkan untuk pemilihan file yang lebih tepat. Misalnya, grep -r string *.txt
akan menghasilkan file hanya di direktori saat ini; bukan yang ada di subdirektori.
find
hadir dengan -exec
opsi kuat yang menghilangkan kebutuhan untuk keseluruhan --null … |xargs 0
konstruksi.
- The
-readable
dan -writable
opsi find
akan mencegah membuang-buang waktu pada file yang tidak dapat diakses.
Tes pengambilan
Yang mengatakan, grep
apakah 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 sed
lari kering. The sed
pilihan -n
adalah sinonim untuk --quiet
dan p
di akhir dari sed
ekspresi 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 sed
opsi -n
dengan -i
untuk "di tempat" dan dengan menghapus p
di 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 find
contoh
Lebih banyak find
contoh dapat ditemukan di sini .