Renombrar Arbol de directorio
Guillermo O. Burastero
gnulinux en bvconline.com.ar
Mie Mayo 19 11:20:29 CLT 2004
Germán Poó Caamaño wrote:
>El mar, 18-05-2004 a las 22:11, +0200, Jhamil Mercado escribió:
>
>
>>Tengo un arcbol de directorios (directorios,
>>subdirectorios, archivos, etc)
>>
>>hecho en M$ los nombres de todo estan en mayusculas y
>>con espacios, ademas son grandes de nombre.
>>
>>ahora necesito pasarlos a linux, como puedo renombrar
>>todo el rabol de directorios de forma recursiva
>>tambien los archivos a minusculas y reemplazar los
>>espacios de los nombres por _ subyarado.
>>
>>
>
>for i in `find directorio`
>do
> target=`echo $i | tr A-Z a-z | sed 's/ /_/g'`
> mv $i $target
>done
>
>
>
Creo que el comando no funciona en general ya que si la lista devuelta
por el find contiene directorios con blancos embebidos en el nombre
(mala práctica en mi opinión) y salvo que se use "find -depth" se cambia
primero el nombre del directorio, luego el nombre de un archivo
originalmente en ese directorio $i no va a ser encontrado porque el
nombre de algún directorio en su paso fue cambiado previamente.
Sugiero primero cambiar todos los nombres de directorios buscándolos con
"find -type d directorio" y luego recién hacer el cambio en los nombres
de archivos no directorios. Esto tampoco andaría en general por ejemplo
si hay en el paso al archivo más de un directorio con blancos.
Un solución más robusta aunque menos elegante sería por ejemplo (ojo que
no la he probado).
for a in `find -depth directorio`
do paso=`dirname $a`
nombre=`basename $a`
nuevo=`echo $nombre | tr A-Z a-z | sed 's/ /_/g'`
pasosuevo=$paso$nuevo
mv $a $pasonuevo
done
--
Guillermo O. Burastero Linux Counter user 84879 (http://counter.li.org)
Córdoba 171 - B8000IFC - Bahía Blanca Tel +54 (291) 454-6132
Prov. de Buenos Aires - Rep. Argentina ICQ 97148268 email: gnulinux en bvconline.com.ar
Más información sobre la lista de distribución Linux