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 findmenemukan 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 xargsmembaca output find, meraih daftar berdasarkan pemisah ( \0karena -0), memanggil sed -i [...]dengan parameter tambahan dari daftar ( sedakan dipanggil beberapa kali jika ada banyak file, karena panjang maksimum parameter dibatasi dalam setiap doa).
The sedperintah memodifikasi di tempat ( -i).
Adapun /KeyWord/d, itu akan menghapus baris yang berisi ekspresi reguler KeyWord.
Anda harus belajar sedmemahami 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:
s/KeyWord//g
(penggantiKeyWord
dengan '' (string kosong),g
untuk semua (tidak hanya yang pertama pada setiap baris)Anda dapat menggunakan Vim dalam mode Ex:
g
pencarian globald
menghapusx
Simpan dan tutupsumber
find: illegal option -- t
, harus menambahkan.
find . -type f -exec ex -sc g/KeyWord/d -cx {} ';'