Re: rinominare ricorsivamente directory
Hi
> Alle ore 17:34, giovedì 05 luglio 2001, Thor ha scritto:
> > Hi
> >
> > [...]
> >
> > > > 1) Aggiungi un ciclo while esterno che riesegue il tuo ciclo
> >
> > controllando
> >
> > > > l'uscita
> > > > di un flag. Dopo aver mosso una directory imposta il flag a true
> > > > ed esci
>
>
> Mi spiace, ma non funzia, :-(
>
> qui sotto una parte del MV:
>
> mv "./?TEST%20MANAGERS/Trent%20Olivier" "./:a5TEST MANAGERS/Trent
> Olivier"
> mv "./?TEST%20MANAGERS/Josh%20Nie" "./:a5TEST MANAGERS/Josh Nie"
> mv "./?TEST%20MANAGERS/Eddie%20Wen" "./:a5TEST MANAGERS/Eddie Wen"
> mv "./?TEST%20MANAGERS/Dan%20O'Connel" "./:a5TEST MANAGERS/Dan O'Connel"
> mv "./?TEST%20MANAGERS/Dan%20Forzano" "./:a5TEST MANAGERS/Dan Forzano"
> mv "./?TEST%20MANAGERS/Adrian%20Keith" "./:a5TEST MANAGERS/Adrian Keith"
>
> come vedi lo script ha cambiato i nomi delle directory, e sono in
> ordine inverso, ma non basta, infatti dovrebbe essere :
ops ;-)
sorry l'ho guardato 30 secondi e patchato in
5 (senza provare) i risultati si vedono ;-)
riposto qui' il tuo script corretto (spero ma non lo provo
perche' non ho voglia di stare a creare
n directory ed n file per la simulazione :) )
fammi sapere
ciao
---
;---+---;
bye |
bye |hor
-------------------------------------
#!/bin/bash
for FILE in `find . -name "*" -print | sort -r | tr " " "}"`;
# cerco tutti i file e dir e cambio lo spazio con }
do
FN=`basename $FILE | sed s/\%20/\}/g | tr "\200" "%" \
| sed s/%/:a5/g`
FILE2=`dirname $FILE`
FILE2=${FILE2}${FN}
# qui sostuisco %20 con }, cambio il carattere \200
# con %, infine % con il carattere ":a5", assegnando il tutto
# alla variabile $FILE2
echo "$FILE" "$FILE2"
# qui per controllare a video che vada tutto bene.
echo "mv `echo $FILE | tr "}" " " | tr "\200" "?"` \
\"`echo "$FILE2" | tr "}" " " | tr "a" "e"`\"" >> MV;
# nella variabile $FILE riporto a spazio il carattere },
# cambio \200 con ? (in modo che la shell possa riconoserlo)
# In $FILE2 riporto a spazio } e copio il tutto in MV
done
chmod 755 MV
./MV
Reply to: