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