hai ragione, anche io sono contro gli spazi nei nomi file..però erano tutte canzoni già codificate così.
Poco male, ho girato un po' e ho trovato questo script, lo posto così se a qualcuno serve lo può usare:
#!/bin/bash
#script che trasforma gli spazi nei file in underscore(_)
#Riesce a rinominare anche cartelle e sottocartelle
#Lascia invariate Maiuscole e minuscole
#se si vogliono cambiare maiuscole in minuscole basta cambiare
#tr 'A-Z ' 'A-Z_'` in tr 'A-Z ' 'a-z_'`
#Autore Lucio Zara (nick pennega)
#Sito www.spaghettilinux.org
#Mail
[email protected]
#Versione 0.5
#Licenza GPL
#funzione usata per rinominare i file
RENAMEFILE() {
#$FILE non è necessario definirla come locale
local FILE=$1 #$1 è la 1° variabile passata alla funzione al momento della sua invocazione
#se non ho spazi nel nome file non lo devo rinominare
if echo $FILE | grep " " ; then
NEWNAMEFILE=`echo $FILE | tr 'A-Z ' 'A-Z_'`
#rinomino il file $NEWNAMEFILE contiene il nome del file
#con gli spazi traformati in _
mv "$FILE" $NEWNAMEFILE
fi
}
#questa è una funzione ricorsiva
RENAMEDIR() {
#$DIR è necessario definirla come locale
local DIR=$1
if echo $DIR | grep " " ; then
NEWNAMEDIR=`echo $DIR | tr 'A-Z ' 'A-Z_'`
mv "$DIR" $NEWNAMEDIR
else
#se non ci sono spazi assegno a $NEWNAMEDIR il valor di $DIR
NEWNAMEDIR=$DIR
fi
#Entro nella dir per verificare se ho altre dir o file
cd $NEWNAMEDIR
find -maxdepth 1 | while read d; do
#il comando find mi restituisce tra i risultati anche la dir corrente ./
#che non và considerata
if [ "$d" != "." ]; then
#verifico se $d è una directory
if [ -d "$d" ]; then
#se $d è una directory richiamo la funzione ricorsivamente
RENAMEDIR "$d"
else
#se $d non è una directory richiamo la funzione RENAMEFILE
RENAMEFILE "$d"
fi
fi
done
#Visto che prima sono entrato in $NEWNAMEDIR
adesso devo uscirne per poter continuare
cd ..
}
#MAIN
find -maxdepth 1 | while read l; do
#il comando find mi restituisce tra i risultati anche la dir corrente ./
#che non va considerata
if [ "$l" != "." ]; then
#verifico se ho una directory
if [ -d "$l" ]; then
#richiamo la funzione RENAMEDIR
RENAMEDIR "$l"
else
#richiamo la funzione RENAMEFILE
RENAMEFILE "$l"
fi
fi
done