Si buscaban como reemplazar texto dentro de varios archivos en una sola linea de comando, han llegado al lugar correcto. Muchas veces tenemos que buscar o hacer cambios a un texto determinado y para empezar no sabemos ni en cual archivo, documento o directorio puede estar.

Digamos que le cambiamos direccion IP al servidor, y es necesario hacer los cambios en todos los archivos de configuracion y logs donde aparezca la IP anterior.

Para no estar buscando durante horas entre todos los archivos de nuestro servidor, les paso estos tips para reemplazar strings alfanumericos en linux.

  • Para reemplazar un texto o string cada vez que aparezca en los archivos:
  • deathbian:~# find /path/directorio "*.txt" | xargs perl -pi -e 's/texto/reemplazo/g'
    


  • Para reemplazar la primera vez que aparezca el texto:
  • deathbian:~# find /path/directorio "*.txt" | xargs perl -pi -e 's/texto/reemplazo/'
    


  • Para reemplazar todos los archivos dentro de un directorio:
  • deathbian:~# for arg in `ls -C1`; do perl -pi -e 's/texto/reemplazo/g'; done;
    


Existe infinidad de combinaciones posibles utilizando el shell de la linea de comandos. Tomemos como ejemplo la primera busqueda:

deathbian:~# for arg in `find /your/home/dir -name "*.txt"` ; do perl -pi -e
's/texto/reemplazo/g' $arg; done;


Ningun articulo relacionado.