Re: [bash] rimuovere spazi nel nome dei file e delle directory.
In data lunedì 6 giugno 2011 15:10:34, Alessandro T. ha scritto:
> Il 06/06/2011 00:10, gollum1 ha scritto:
> > Ciao All,
> >
> > come da oggetto, vorrei fare uno script che mi rimuova tutti gli spazi
> > (sostituendoli con il carattere underscore) partendo da una directory, e
> > per tutte le sue sottodirectory e file in esse contenute.
>
> IFS=$'\n';
> for A in `find . -depth`; do
> nome=${A##*/};
> dir=${A%/*};
> nnome=`echo $nome | sed 'y/ /_/'`;
> if [ "$nome" != "$nnome" ]; then
> mv "$A" "$dir/$nnome";
> fi
> done
grazie Alessandro, ho sviluppato lo script che mi hai scritto.
per conoscenza...
questo è finalmente quello che volevo ottenere... grazie a tutti per l'aiuto:
echo "start $0"
echo "Tratto i file che si trovano nella directory $ORIG\n"
echo "Sostituisco tutti gli spazi con il simbolo underscore \"_\"\n\n"
IFS=$'\n';
for A in `find . -depth`; do
echo -en "\033[1A\033[K>>>Controllo il file $A\n"
nome=${A##*/};
dir=${A%/*};
nnome=`echo $nome | sed 'y/ /_/'`;
if [ "$nome" != "$nnome" ]; then
if test `find $dir -maxdepth 1 -name $nnome`; then
found=`find $dir -maxdepth 1 -regex "$dir/$nnome-[0-9][0-9]" | sort |
tail -n 1`
if test $found; then
cont=$((`echo ${found:${#found}-2:2}` + 1))
cont=`printf "%02d" $cont`
nnome=$nnome"-"$cont
else
nnome=$nnome"-01"
fi
fi
echo -en "\033[1A\033[Krinomino \"$A\" come \"$dir/$nnome\"\n\n"
mv "$A" "$dir/$nnome";
fi
done
byez
--
Gollum 1
Tessssssoro, dov'é il mio tesssssssoro...
Reply to: