С GNU sed:
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 **/*(.)