Ipsissima verba Anibal Duardo:
> Por ahi vi que este tema ya se trat�, pero no entiendo bien.  Yo
> necesito cambiar una cadena "oracle" por otra "nuevooracle" dentro
> de unos cuantos archivos debajo de un directorio y sus
> subdirectorios. No son muchos en total unos 19900, jejeje.
>       creo que jonh puso algo como
> 
>       perl -pi -e 's/oracle/nuevooracle/g' *
> 
> Como hago para que esto sea recursivo en subdirectorios, he estado
> tratando de encontrarlo en perl pero no lo logro, ya que ni idea de
> perl que tengo, je

Usar Perl para esto es matar pulgas con escopeta, en mi opini�n.

Yo usar�a algo como:

  find /home/alguien/dir -type f -name '*.txt' -exec \
   sh -c 'echo "$0"; (sed -e "s/oracle/nuevooracle/g" < "$0" > "$0".tmp) \
          && mv "$0".tmp "$0"' '{}' ';'

Nota que esto es muy peligroso.  Deber�as correr primero el find con
los criterios de b�squeda, pero sin el exec, para ver que no se est�n
procesando cosas que no deben; y deber�as ejecutar la l�nea completa
sobre un directorio de prueba, con copias de algunos de los archivos,
y verificar que se haga lo que quieres, antes de correrlo sobre el
directorio real.

Finalmente, esto no es particularmente r�pido, por la invocaci�n a sh
en cada iteraci�n; ni particularmente limpio, porque se sobreescriben
incluso archivos en los que no se hizo ning�n reemplazo.  Una soluci�n
m�s limpia probablemente requerir�a un script en forma (en sh o en
Perl, como gustes)...

... lo cual se deja como ejercicio para el lector :-)

 -CR

-- 
Ceterum censeo: SCO delenda est.

Responder a