Necesitamos reemplazar una cadena de texto en todos los ficheros de todo un directorio y subdirectorios

Para reemplazar lo mejor es utilizar sed, como sed por defecto solo reemplaza pero lo muestra en pantalla no los guarda debemos utilizar la opción -i

sed -i “s/cadena1/cadena2/g” fichero

Dado que nuestra cadena tiene caracteres del tipo / o , debemos indicarle que se trata de un carácter de la cadena, esto se hace anteponiendo \ al carácter. Por ej: \”

Con esto ya podemos reemplazar la cadena en un fichero

Para hacerlo recursivo debemos utilizar find

find /var/www/vhosts/prueba/ -name “*.php” -print | xargs sed -i “s/cadena1/cadena2/g”

Esto reemplaza la cadena indicada en todos los ficheros .php de la carpeta /var/www/vhosts/prueba/

Por ejemplo si lo que queremos es cambiar una ruta dentro de todos los ficheros php:

find /var/www/vhosts/prueba/ -name “*.php” -print | xargs sed -i “s/\/etc\/php.ini/\/etc\/php\/php.ini/g”

Si te interesa, Comparte!!