Re: Reemplazar dentro de archivos
Cesar Rincon wrote:
>
> On Tue, 2003-02-25 at 11:15, Willy Walker wrote:
> > Lo que me gustaría es un comando que me permitiera que buscar en todos los
> > archivos de un Directorio, en este caso del nuevo usuario, y sustituir la
> > ruta antigua por la nueva, y el nombre de usuario antiguo por el nuevo.
>
> grep -lr 'viejo' 'dir' | xargs -n 1 -iX sh -c \
> "echo 'X'; sed 's|viejo|nuevo|g' 'X' > 'X.new' && mv 'X.new' 'X'"
>
> Donde 'dir' es el directorio base, debajo del cual quieres procesar
> todos los archivos; 'viejo' es la cadena que quieres reemplazar; 'nuevo'
> es el reemplazo. Las comillas son por si alguna de éstas cadenas
> contiene espacios. 'viejo' y 'nuevo' no deben contener pipas ('|'); si
> necesitas usar pipas, cambia el separador usado en la expresión del sed.
>
> Si usas '/' como directorio base, ésto procesará todos los archivos en
> tu filesystem (mientras tú te vas por un café y un tabaco).
>
> El grep inicial evita que se procesen archivos innecesariamente. El
> echo es para que veas qué archivos se modifican.
>
> Nota que éste es un comando riesgoso. Te recomiendo probarlo en una
> copia de tu directorio base antes de correrlo "live" (e.g.,
> cp -r /etc /tmp/etc, reemplaza sobre /tmp/etc, diff -u /etc /tmp/etc,
> verifica que no haya hecho barbaridades).
>
> A ver si a alguien se le ocurre una manera más bonita.
>
Creo que eso te va a dar mas dolores de cabeza de los que te va a
quitar...
No creo que haya tantas referencias al usuario en cuestión.
Yo las buscaría a mano...
find . -name "*" -exec grep usuario {} \;
find . -name "*" -exec grep -l usuario {} \;
Imagino que si hay rutas tipo /home/usuario/..../ es porque no se hizo
bien
y debería poner $HOME/..../
Saludos.
--
Fernando.
{:-{D>
"Hackers do it with fewer instructions."
Reply to: