[gull] Espaces dans les noms de fichiers
Julien Künzi
julien.kuenzi at gmail.com
Tue Jan 25 20:20:03 CET 2005
Le Mardi, 25 Janvier 2005 18.49, Philippe Strauss a écrit :
> A ce propos:
> J'avais une série de fichier .wav dont le e accent aigu était pas
> bien interprété (on voyait un ? a la place).
> Comment faire pour renommer tout d'un coup, genre:
>
> for i in *.wav; do mv $(echo \"$i\") $(echo \"$i\" | sed -e
> "s/NoirD.sir/Noir Désir/g") ; done
>
> ca me donnait "mv: when moving multiple file, destination must be a
> directory"
julien at begbie:/tmp/test2> ls
Noir Daasir - 1.wav Noir Daasir - 4.wav Noir Daasir - 7.wav
Noir Daasir - 2.wav Noir Daasir - 5.wav Noir Daasir - 8.wav
Noir Daasir - 3.wav Noir Daasir - 6.wav Noir Daasir - 9.wav
julien at begbie:/tmp/test2> for i in *; do mv "$i" "$(echo "$i" | sed -e "s/Noir
Daasir/Noir Désir/g")" ; done
julien at begbie:/tmp/test2> ls
Noir Désir - 1.wav Noir Désir - 4.wav Noir Désir - 7.wav
Noir Désir - 2.wav Noir Désir - 5.wav Noir Désir - 8.wav
Noir Désir - 3.wav Noir Désir - 6.wav Noir Désir - 9.wav
Avec votre méthode, le " (i.e. \" après avoir été interprété par le shell) est
considéré comme un caractère faisant partie du nom de fichier, et non comme
un moyen de faire comprendre au shell que l'argument est composé de plusieurs
mots.
julien at begbie:/tmp/test2> touch test
julien at begbie:/tmp/test2> echo \"test\"
"test"
julien at begbie:/tmp/test2> mv $(echo \"test\") test2
mv: ne peut évaluer `"test"': Aucun fichier ou répertoire de ce type
julien at begbie:/tmp/test2> mv "test" test2
julien at begbie:/tmp/test2> ls test*
test2
De manière générale, d'après mon expérience (touristique), il suffit de mettre
les arguments entre guillemets doubles ("$i", "$(echo test)") pour éviter les
ennuis.
bye,
julien.
More information about the gull
mailing list