З sed GNU:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
За допомогою OSX sed:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
Перша команда find
знаходить усі стандартні файли (а не каталоги, труби тощо), друкує їх розділеними \0
(тому назви файлів можуть містити пробіли, нові рядки тощо).
Друга команда xargs
зчитує вихід find
, захоплює список на основі роздільника ( \0
через -0
), викликає sed -i [...]
додані параметри зі списку ( sed
буде називатися кілька разів, якщо файлів багато, оскільки максимальна довжина параметрів обмежена в кожне виклик).
sed
Команда змінює на місці ( -i
).
Щодо /KeyWord/d
, він видалить рядки, що містять регулярний вираз KeyWord
.
Вам слід навчитися sed
правильно розуміти (простий, але незвичний) синтаксис та звертатися до відповідних манджейдів для отримання додаткової інформації про інструменти, які тут містяться.
І як я люблю просувати zsh
, рішення з розширеними сферами:
sed -i /KeyWord/d **/*(.)