[EMAIL PROTECTED] wrote:
> ...
> la pregunta en verdad es esta:
>
> quiero hacer un script que me cambie los nombres de estos
> ficheros/directorios
> que contienen espacios en blanco...
>
> hago esto que funciona...
>
> IFS="" ; for i in `ls -R` ; do q=`echo $i | sed s/' '/_/g` ; echo $i
> ; done
> ...
No te creo :)
el nombre de un archivo con blancos que resulta de ls -R
es interpretado dentro de la lista del for como varios elementos
de la lista.
Distinto ser�a si haces un
for i in *
�
for i in */*
en tal caso cada archivo es un elemento de la lista del for y
hay alguna chance de que la cosa funcione.
Para conseguir hacer la operaci�n en un �rbol de directorios
lo �nico que se me ocurre es hacer un find:
find . -name '*' -exec ./reno \{\} \;
donde ./reno es un peque�o script:
#! /bin/bash
q=$(echo $1 | sed s/' '/_/g)
mv "$1" $q
Esto funciona +o-:
-Se queja de que est�s tratando de renombrar de un archivo
al mismo (en los casos en que no tienen espacio en el nombre).
-Si un directorio tiene un espacio en el nombre primero lo
renombra y luego intenta renombrar los archivos que contiene.
Y como el directorio esta cambiado ya no encuentra los archivos
con el viejo nombre. Se arregla ejecutando de nuevo el comando.
Intent� hacerlo todo en una l�nea pero no me sali�: no consegu�
que cada caracter especial sea interpretado por quien corresponde:
{ } y ; por find, algunas comillas por bash, el | por no se qui�n...
--
Saludos,
O__
Enzo. ,>/
____________________________________________________()_\()____
Enzo A. Dari | Instituto Balseiro / Centro Atomico Bariloche
8400-S. C. de Bariloche, Argentina | [EMAIL PROTECTED]
Phone: 54-2944-445208, 54-2944-445100 Fax: 54-2944-445299
Web page: http://cabmec1.cnea.gov.ar/darie/darie.htm