Buscar y reemplazar texto puede ser una tarea sencilla utilizando los editores de texto más básicos. Pero, ¿qué sucede cuando es necesario hacer esa misma tarea en varios archivos al mismo tiempo?
Bueno, ahí la cosa se complica… o no tanto. |
En el siguiente ejemplo, usaremos sed para reemplazar todas las ocurrencias de la palabra «mongo» por la palabra «aurelio» en todos los archivos que tengan la extensión .txt y que se encuentren en la carpeta /home/usuario/micarpeta/.
find /home/usuario/micarpeta/ -name *.txt -exec sed -i "s/mongo/aurelio/g" {} \;
Así de fácil…
Antes de terminar, vale la pena mencionar que algunos editores de texto permiten realizar esta operatoria utilizando una interfaz gráfica. Entre otros, cabe destacar a Jedit, Geany, Regexxer, etc.
10 comentarios, deja el tuyo
super
yo uso el Gedit
gedit para multiples archivos??? como???
Como podria poner un grep entremedio ai ?
Lo que necesito es hacer lo siguiente , buscar dentro de home todos los archivos que se llamen index.html y que contengan la palabra «XXXXXXX» , y reemplazarlo con «YYYYYYYYYY» , como se podria hacer para que busque solo en los archivos que realmente tengan la string ?
Muchas Gracias !
Yo uso el Gedit tambien, mas muchas gracias
Te falta el argumento para exec. El codigo correcto seria:
find /home/usuario/micarpeta/ -name *.txt -exec sed -i «s/mongo/aurelio/g» {} \;
Un saludo 😀
Tenés razón! Gracias!
Ya lo corregí. :=)
Recien acabo de probar esto (como ROOT):
find /usr/share/icons/ACYL-Allgray/ -name *.svg -exec sed -i «s/666666/000000/g» {} \;
para cambiar el color de todo un set de iconos. La verdad que es un comando muy poderoso, normalmente esta tarea me habría tomado horas editando archivo por archivo.
Insertar texto en varios archivos, segun el numero de la linea, en mi caso linea 2 (2i), en centos linux
find /home//public_html/res/ -name -exec sed -i «2i\;» {} \;
no salio todo el codigo asi que reenvio:
find /home/user/public_html/res/ -name nombrearchivo.ext -exec sed -i «2i\texto a insertar» {} \;