Articulos, Expresiones Regulares

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

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;

Terminos de busqueda

  • que pasos hay que seguir para buscar y reemplazar un texto
  • buscar y reemplazar linux
  • reemplazar texto linux
  • linux reemplazar texto
  • buscar y reemplazar cadena dentro de varios archivos
  • buscar y reemplazar texto
  • reemplazar texto en archivos
  • comando reemplazar linea texto
  • perl reemplazar textos en un archivo
  • perl reemplazar texto
  • 13 Comments

      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)

    1. 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.

    2. 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

    3. 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

    4. 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

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

    6. 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

    Comentario, Preguntas o agradecimientos?

    %d bloggers like this: