Другие решения смешивают синтаксис регулярных выражений. Для того, чтобы использовать 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.