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