[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: