Dengan sed GNU:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Dengan sed OSX:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
Perintah pertama find
menemukan semua file standar (bukan direktori, atau pipa, atau lain-lain), mencetaknya dengan dipisahkan \0
(sehingga nama file dapat berisi spasi, baris baru, dll.).
Perintah kedua xargs
membaca output find
, meraih daftar berdasarkan pemisah ( \0
karena -0
), memanggil sed -i [...]
dengan parameter tambahan dari daftar ( sed
akan dipanggil beberapa kali jika ada banyak file, karena panjang maksimum parameter dibatasi dalam setiap doa).
The sed
perintah memodifikasi di tempat ( -i
).
Adapun /KeyWord/d
, itu akan menghapus baris yang berisi ekspresi reguler KeyWord
.
Anda harus belajar sed
memahami sintaks (sederhana tetapi tidak biasa) dengan benar, dan merujuk ke halaman manual yang sesuai untuk informasi lebih lanjut tentang alat yang terlibat di sini.
Dan karena saya ingin mempromosikan zsh
, solusi dengan gumpalan yang diperluas:
sed -i /KeyWord/d **/*(.)