Sustitución múltiple

Durante las últimas semanas, me he visto con la necesidad de cambiar una misma línea en cientos de archivos diferentes. Para evitar cambiarlo uno por uno, he buscado por Internet hasta encontrar el comando adecuado, el cual se asemeja mucho al comando de sustitución que tiene ‘vi’:

perl -p -i -e ‘s/DocumentRoot \/usr\/local\/www\/data-dist\//DocumentRoot \/var\/www\//g’ *

En este ejemplo, se buscaría en todos los archivos del directorio actual (*), por la cadena «DocumentRoot /usr/local/www/data-dist» y se sustituiría por «DocumentRoot /var/www».

El comando parece mucho más engorroso, por la necesidad de escapar las «/» que contiene la cadena de búsqueda. En realidad, la sentencia de búsqueda sería la siguiente:

perl -p -i -e ‘s/cadena a buscar/nueva cadena/g’ nombre_ficheros_donde_buscar

Con esto, ya tendríamos la base para realizar sustituciones en múltiples archivos, desde la terminal de nuestra distribución Linux preferida.

 

Fuentes:

http://enavas.blogspot.com/2008/10/reemplazar-texto-en-todos-los-archivos.html
http://es.w3support.net/index.php?db=so&id=1398558