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