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, решение с его расширенными глобусами:
s/KeyWord//g
(заменяетсяKeyWord
на '' (пустая строка),g
для всех (не только первое в каждой строке).Вы можете использовать Vim в режиме Ex:
g
глобальный поискd
удалятьx
сохранить и закрытьисточник
find: illegal option -- t
, пришлось добавить.
find . -type f -exec ex -sc g/KeyWord/d -cx {} ';'