Reemplazar texto de varios archivos en Linux
Voy a explicar cómo reemplazar un texto o cadena de caracteres en varios archivos. Por ejemplo, si tenemos diez archivos .txt en un directorio y queremos que donde aparece la palabra "Pepe", ahora ponga "Jose".
El comando
Se puede hacer fácilmente desde la consola de Linux, con un sólo comando. Sería algo así:
sed -i 's/palabra-vieja/palabra-nueva/g' *.txt
En nuestro caso sería:
sed -i 's/Pepe/Jose/g' *.txt
Este último comando sustituirá la palabra "Pepe" por "Jose" en todos los archivos txt del directorio actual.
¿Pero y si queremos hacer varias sustituciones ejecutando sólo un comando?
El script
Pues lo más sencillo es hacernos un script, en el que se hagan varias llamadas al comando sed, visto anteriormente. Podemos crearnos un archivo que se llame script.sh y que contendrá lo siguiente:
sed -i 's/Pepe/Jose/g' *.txt
sed -i 's/Manolo/Manuel/g' *.txt
sed -i 's/Nacho/Ignacio/g' *.txt
sed -i 's/Inma/Inmaculada/g' *.txt
Ahora ejecutando ese script, estaremos haciendo esas cuatro sustituciones en todos los archivos txt del directorio actual. Para ejecutar ese script, solo tendremos que teclear lo siguiente en la consola:
sh script.sh
Tweet