Pagina 1 di 1

bash rinominare file

Inviato: dom 1 mag 2011, 22:26
da Toni
ciao a tutti
purtroppo sono asciutto di shell scripting

Il mio problema è il seguente :

voglio rinominare un gruppo di file togliendo i primi enne caratteri

Codice: Seleziona tutto

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
cosa mi sfugge? #-o
grazie a tutti

Re: bash rinominare file

Inviato: dom 1 mag 2011, 22:29
da targzeta
Prova a quotare la variabile "$i"

Emanuele

Re: bash rinominare file

Inviato: dom 1 mag 2011, 22:36
da Toni
grazie , funziona :D

potresti spiegarmi perchè?
grazie ancora

Re: bash rinominare file

Inviato: dom 1 mag 2011, 22:53
da targzeta
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:

Codice: Seleziona tutto

mv prova 001.mp3 001.mp3
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

Re: bash rinominare file

Inviato: dom 1 mag 2011, 23:27
da Toni
:thumbright: