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