Otras soluciones mezclan sintaxis de expresiones regulares. Para usar patrones perl / PCRE para tanto buscar y reemplazar, y sólo los archivos coincidentes del proceso, esto funciona bastante bien:
grep -rlZPi 'match1' | xargs -0r perl -pi -e 's/match2/replace/gi;'
dónde match1 y match2generalmente son idénticos, pero match1pueden simplificarse para eliminar características más avanzadas que solo son relevantes para la sustitución, por ejemplo, capturar grupos.
Traducción: grep recursivamente y enumere los archivos que coinciden con este patrón PCRE, separados por nul para proteger cualquier carácter especial en el nombre del archivo, luego canalice los nombres de archivo a los xargsque se espera una lista separada por nul, pero no hará nada si no se reciben nombres, y llegar perla sustituir líneas donde se encuentran coincidencias.
Agregue el Iinterruptor greppara ignorar los archivos binarios. Para la coincidencia entre mayúsculas y minúsculas, suelte el iinterruptor grepy la ibandera adjunta a la expresión de sustitución, pero no el iinterruptor en perlsí.