GNU sed ile:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Bir OSX sed ile:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
İlk komut find
tüm standart dosyaları bulur (dizinler, kanallar vb. Değil), bunları birbirinden ayırarak yazdırır \0
(böylece dosya adları boşluklar, yeni satırlar vb. İçerebilir).
İkinci komut xargs
, çıktısını okur, find
bir ayırıcıya dayalı bir liste yakalar ( \0
nedeniyle -0
), sed -i [...]
listeden eklenen parametrelerle çağırır ( sed
parametrelerin maksimum uzunluğu sınırlı olduğu için çok fazla dosya varsa birden çok kez çağrılacaktır) her çağırma).
sed
Yerinde komutu değiştirir ( -i
).
Gelince /KeyWord/d
, normal ifadeyi içeren satırları siler KeyWord
.
sed
(Basit ama olağandışı) sözdizimini doğru bir şekilde anlamayı öğrenmeli ve burada yer alan araçlar hakkında daha fazla bilgi için uygun manajlara bakmalısınız.
Ve tanıtmak istediğim gibi zsh
, genişletilmiş globs ile çözüm:
sed -i /KeyWord/d **/*(.)