¿Cómo se puede hacer un reemplazo recursivo de cadenas de texto en varios archivos?

Me gustaría reemplazar todas las ocurrencias de la cadena de texto

subdomainA.example.com

por la siguiente otra cadena:

subdomainB.example.com

Me gustaría hacer este reemplazo de forma recursiva para todos los archivos de texto que se encuentren en el directorio /home/www/.

Estás leyendo una traducción autorizada de la pregunta Awk/Sed: How to do a recursive find/replace of a string? planteada por Tedd en StackOverflow.

Respuestas

#1

Este es el comando que debes ejecutar:

$ cd /home/www
 
$ find . -type f -print0 | xargs -0 sed -i 's/subdomainA.example.com/subdomainB.example.com/g'

La opción -print0 hace que el comando find utilice el carácter \0 en vez del espacio en blanco como delimitador de los nombres de archivo que contengan espacios. Esto es mucho más seguro cuando se encadena el comando find con el comando xargs.