Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
toni@darkstar:~/test$ ls
prova\ 001.mp3 prova\ 002.mp3 prova\ 003.mp3
toni@darkstar:~/test$ for i in *.mp3; do mv $i ${i:6} ; done
mv: target `001.mp3' is not a directory
mv: target `002.mp3' is not a directory
mv: target `003.mp3' is not a directory
La spiegazione veloce è che la tua variabile conteneva degli spazi e se vuoi che la bash la consideri tutt'una devi quotare tra doppi apici. In pratica il tuo comando veniva interpretato come:
ovvero come se stessi spostando i file 'prova' e '001.mp3' nel file '001.mp3'. L'errore è lì, solo che la bash, dato che tu gli hai chiesto di spostare 2 file, lamenta il fatto che il file di destinazione non è una directory.
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama