[eside-ghost] cambiar una palabra en todos los archivos de una web?

Pablo Garaizar Sagarminaga garaizar en eside.deusto.es
Mie Mayo 2 11:53:42 CEST 2007


Aupa!

El Wed, 2 May 2007 11:24:52 +0200
"Alex Ortiz de Guinea" <bloowitt en gmail.com> comentaba:

> No habría que hacer algo del pelo
> for i in $directorio/*.html
> do
> sed 's/alli/masalla/g' $i > $newdir/'basename $i'
> done
> Poor ejemplo¿? (Esto es gambada fijo, pero da pie a que Txipi nos
> ilumine :P

Sí, habría que hacer algo así. De hecho tu solución está bastante bien
salvo que basename habría que llamarlo con apóstrofes en lugar de
comillas.

Para cambiarlo sin utilizar otro directorio, hay que usar ficheros
temporales o te cargas el fichero (que algo sea entrada y salida a la
vez cuando hay procesos destructivos por medio, no es muy recomendable):

for F in *.html:
do
  sed -e "s/alli/masalla/g" "$F" > kk
  mv kk "$F"
done

(si se va a ejecutar en un script, podemos llamar al fichero temporal
kk.$$ para evitar problemas de scripts concurrentes)

-- 
  Pablo Garaizar Sagarminaga
  ONTE (Oficina de Nuevas Tecnologías y Educación)
  Universidad de Deusto
  Avda. de las Universidades 24
  48007 Bilbao - Spain

  Phone:       +34-94-4139000 Ext 2980
  Fax:                  +34-94-4139101
  Web:     http://onte.eside.deusto.es


Más información sobre la lista de distribución eside-ghost