[FoLUG] [BASH] script per togliere lo spazio

Masotti Alessandro listaam@gmail.com
Mar 13 Dic 2005 15:58:20 CET


che ne pensate avete da suggerire miglioramenti:

#!/bin/bash
#
#
#  Sostituisce gli spazi nei nomi dei file presenti nella directory
#+ e sotto directory con degli underscore.

#-----------------dichiarazione variabili
globali-----------------------------------------

numero=0         #  Per contare i file effettivamente rinominati.

UNO=1            #  Per gestire correttamente il singolare/plurale
                 #+ (vedi oltre).
shopt -s nullglob
elenco_dir=(`find /home/masotti/Download/amule/ -iname "*"`)
let lunghezza=${#elenco_dir[*]}-1 #determino la lunghezza dell'array
dir_primaria=`pwd`

#----------------fine dichiarazione variabili
globali--------------------------------

#-----------------dichiarazione
funzioni-----------------------------------------
function rinomina() {                        #rinomina i file della
directory corrente
   TROVATO=0                                 #  Valore di ritorno in
caso di successo.
   for nomefile in *
   do
      #echo $nomefile
      echo "$nomefile" | grep -q " "         #  Controlla se il nome del
file
      if [ $? -eq $TROVATO ]                 #+ contiene uno/degli
spazio(i).
      then
         NEWNAME=`basename "$nomefile" | sed -e 's/\ /_/g'`  #  Elimina
il percorso.
                                                             #+
Sostituisce lo spazio
                                                             #+ con un
underscore.
         mv "$nomefile" "$NEWNAME"                           #  Rinomina.
         let "numero += 1"
     fi

   done
}

function percorri_dir(){
for nomefile1 in `seq 0 $lunghezza`
do
   cd "${elenco_dir[nomefile1]}"
   rinomina                        #chiamo la funzione per rinominare
   cd $dir_primaria                #ritorno alla dir iniziale cosi anche
se ho fatto
                                   #+ cd di un file non combino disastri
done
}
function stampe(){

   if [ "$numero" -eq "$UNO" ]                 # Per una corretta
grammatica.
   then
      echo "$numero file rinominato."
   else
      echo "$numero file rinominati."
   fi
}

#-----------------fine dichiarazione
funzioni-----------------------------------------


#--------------------corpo programma-----------------------

percorri_dir #chiamo la funzione per rinominare i file
stampe       #chiamo la funzione delle stampe

exit 0

#--------------------fine corpo programma------------------------------


Maggiori informazioni sulla lista FoLUG