Foros del Web » Administración de Sistemas » Unix / Linux »

Reemplazar cadenas en varios archivos

Estas en el tema de Reemplazar cadenas en varios archivos en el foro de Unix / Linux en Foros del Web. Qué tal gentes: Mediante la siguiente orden reemplazo una cadena de texto en los archivos que tengo en el servidor. Funciona bien, pero no es ...
  #1 (permalink)  
Antiguo 09/10/2009, 15:33
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
Reemplazar cadenas en varios archivos

Qué tal gentes:

Mediante la siguiente orden reemplazo una cadena de texto en los archivos que tengo en el servidor. Funciona bien, pero no es capaz de abrir un archivo cuando éste tiene espacios en blanco en su nombre (ej: mi archivo.htm).

¿Se les ocurre algo para esto?

find /mi/directorio -name "*.php" | xargs perl -pi -e 's/texto viejo/texto nuevo/g'
__________________
El conocimiento es libre: Movimiento por la Devolución
  #2 (permalink)  
Antiguo 10/10/2009, 23:07
rqd
 
Fecha de Ingreso: julio-2008
Mensajes: 228
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Reemplazar cadenas en varios archivos

checa el editor sed a ver si con eso lo resuelves

http://www.tutorialesytrucos.com/edi...editor--2.html
  #3 (permalink)  
Antiguo 11/10/2009, 10:36
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
Respuesta: Reemplazar cadenas en varios archivos

rqd:

Efectivamente con "sed" logré hacer lo que quería
Aunque sólo me queda un inconveniente (aunque mínimo). Quiero aprovechar el mismo scipt para hacer el cambio en varios tipos de archivo (no sólo los TXT); se supone que d ela siguiente forma debiera funcionar, pero sólo me hace el cambio en el segundo tipo de archivos (PHP) y no en los TXT:

Código:
find /ruta/inicio -name "*.txt" -o -name "*.php" -exec sed -i 's/texto1/texto2/g' {} \ ;
Es lo único que me quedaría por resolver
__________________
El conocimiento es libre: Movimiento por la Devolución
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:50.