Ciao, ho scritto un piccolo script che a partire da una directory contenente file mp3, controlla i tag e, se esistono i tag con artista album ecc..., crea le relative cartelle di artista e album. Posto lo script e vi illustro il mio problema:
codice:
#!/bin/bash
DIR="$HOME/aMule/Incoming/Musica/prova"
cd $DIR
#salva la lista dei file mp3 (uno per ogni riga) in elenco.txt
ls -1 | find *.mp3 > elenco.txt 2> /dev/null
#controlla che l'exit status sia uguale a 0, altrimenti non ci sono file mp3 nella dir
if [ $? -eq 0 ]; then
while read line; do
#salva il tag di ogni file mp3 in un file di testo
id3tool "${line}" > tag"${line}".txt
#estrapola artista anno e album del file mp3
ARTIST=`grep "^Artist" tag"${line}".txt | cut -f3`
YEAR=`grep "^Year" tag"${line}".txt | cut -f3`
ALBUM=`grep "^Album" tag"${line}".txt | cut -f3`
#se la cartella dell'artista non esiste la crea
if [ ! -d "$ARTIST" ]; then
mkdir "$ARTIST"
fi
mv "${line}" "$ARTIST"
cd "$ARTIST"
#se la cartella album non esiste la crea
if [ ! -d "$YEAR - $ALBUM" ]; then
mkdir "$YEAR - $ALBUM"
fi
mv "${line}" "$YEAR - $ALBUM"
cd ..
#cancella i file usati per le operazioni
rm tag"${line}".txt
done < elenco.txt
rm elenco.txt
else
echo "La directory non contiene nessun file mp3"
rm elenco.txt
fi
exit 0
Spero di aver commentato abbastanza il codice.
Vi spiego il problema: in $YEAR salva esattamente quello che mi serve (le 4 cifre dell'anno), ma sia per $ARTISTA che $ALBUM dopo il nome aggiunge mooolti spazi (non li ho contati ma saranno almeno 10/15).
Qualcuno mi sa dire il motivo? La sintassi sia per $ARTISTA che per $YEAR è identica, ma non capisco perchè si comporta diversamente.
Grazie in anticipo,
Peppe