Другие решения смешивают синтаксис регулярных выражений. Для того, чтобы использовать Perl / шаблоны PCRE для обоих поиска и замены, а только процесс согласования файлов, это работает очень хорошо:
grep -rlZPi 'match1' | xargs -0r perl -pi -e 's/match2/replace/gi;'
где match1
и match2
обычно идентичны, но match1
могут быть упрощены, чтобы удалить более продвинутые функции, которые имеют отношение только к замене, например, захват групп.
Перевод: grep
рекурсивно и список файлов, которые соответствуют этому шаблону PCRE, разделенные nul для защиты любых специальных символов в имени файла, затем передают те имена файлов, к xargs
которым ожидает разделенный нулями список, но ничего не сделают, если не будут получены имена, и получить perl
замену строк, где найдены совпадения.
Добавьте I
переключатель, grep
чтобы игнорировать двоичные файлы. Для сопоставления с учетом регистра удалите i
переключатель из grep
и i
флаг, прикрепленный к выражению подстановки, но не сам i
переключатель perl
.