Buscar y Reemplazar texto en todos los archivos dentro de un directorio y todos los subdirectorios

13 Comments

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;

13 Replies to “Buscar y Reemplazar texto en todos los archivos dentro de un directorio y todos los subdirectorios”

  1. Hola.

    Tengo una inquietud adicional:

    La cadena que debo reemplazar está dentro de dos posiciones específicas. Si la encuentra en otra posición no debe reemplazar.

    ¿Qué se debe hacer?

    Mil gracias

  2. He tratado de usar esto en linux pero me dice que los archivos no son regulares? Que puede ser? Grácias

  3. Muchas gracias!!!!, me sirvio mucho para resolver un gran problema que tenia, ya que debía realizar un reemplazo de mas de 25 mil archivo y funciono sin ningun problema.

    Saludos y gracias nuevamente

  4. aca les dejo uno que encontrre reemplaza lineas de texto masivamente en muchas clases de archivoo para xp TexFinderX 2.14 for Windows XP and Vista

  5. perl -pi.bak -e “s/favicon.ico/fernando.ico/g;” configuration.php busca en el archivo configuration.php y reemplaza favicon.ico con fernando.ico

  6. Para reemplazar direcciones de correo en la configuracion de exim utilizo;

    find /etc/exim/* | xargs perl -pi -e ‘s/usuario\@dominio.com//g’

    y con eso puedo borrar la direccion de usuario en N documentos.

    1. Que buena ayuda !!!, en verdad que da gusto saber que hay gente profesional dedicada a colaborar con los demas. Muchas gracias por el aporte. (b):D(ci)

Deja tus preguntas o comentarios