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."

Responder a