Ah oui, c'est casse-bonbons, les espaces...

Cependant, note que tu n'as pas besoin de faire une boucle pour utiliser la
commande rename, car elle est justement prévue pour faire des renommages en
masse, contrairement à mv qui fait un renommage unitaire.

La commande que tu veux est :

rename 's/Piste/Album/' *.ogg

Quand tu utilises rename, je te conseille de jouer systématiquement ta
commande une première fois avec le paramètre -n à la fin, la commande sera
alors _simulée_ et se contentera de te dire comment les fichiers auraient
été renommés.

exemple : rename 's/Piste/Album/' *.ogg -n

Explication : on demande à rename de regarder tous les fichiers .ogg du
répertoire courant (*.ogg) et de remplacer «Piste» par «Album».

Le paramètre 's/Piste/Album' est une expression Perl : si tu fais un «man
rename», tu verras d'ailleurs que l'auteur de cet outil n'est autre que
Larry Wall, l'inventeur du langage Perl :-)

Les apostrophes autour de s/Piste/Album/ ne sont pas nécessaires, mais c'est
une bonne pratique dans l'absolu : justement au cas où on a des espaces...

Imagine que tu aies des fichiers :

Goldman Jean-Jacques 01.ogg
Goldman Jean-Jacques 02.ogg

Pour inverser le nom et le prénom, il faudra que tu fasses :

rename 's/Goldman Jean-Jacques/Jean-Jacques Goldman/' *.ogg


Autrement, pour éviter de tomber à nouveau dans le piège, quand tu as un
espace dans un nom de fichier, tu peux :

1) mettre toi-même les protections \ devant chaque espace (bof, hein ?)
2) laisser bash mettre les protections \ en te servant de l'auto-complétion
3) encadrer le nom du fichier par des apostrophes ', ou des guillemets
anglais " (je rappelle que les guillemets français sont : «»)

Note que quand quelque chose est encadré par des apostrophes, bash prend la
valeur telle quelle, alors que si on met des guillemets, la valeur sera
interprétée... si elle contient une variable par exemple, celle-ci sera
évaluée.

Exemple : je t'invite à comparer les résultats de

echo $PATH

echo "$PATH"

et

echo '$PATH'


Amicalement,

Miklos.

Le 10/02/07, Daniel Cartron <[EMAIL PROTECTED]> a écrit :

Bonjour à tous,

J'ai un souci lorsque je veux renommer un fichier Piste 01.ogg en Album
01.ogg, j'ai un message d'erreur me disant que le fichier n'existe pas. Si
j'utilise l'auto-complètement le bash me transforme le nom du fichier en
piste\ 01.ogg et à ce moment-là ça marche. Là où je suis emm...é c'est
quand
je veux scripter ça pour renommer tout le répertoire d'un coup, avec un
truc
du genre
for fichier in *.ogg ; do rename Piste Album $fichier ; done
l'espace n'est plus détecté et précédé de \ et donc ça marche pas....

Une idée pour contourner ça?

PS ne me dites pas que c'est mal de mettre des espaces dans les noms de
fichiers, c'est oggenc qui l'a fait tout seul... Et j'ai pas envie de
reripper tous les CDs incriminés.

--
Cordialement, Daniel Cartron
« Une bonne citation placée au bon endroit et au bon moment peut, pour un
instant, faire paraître le pire des imbéciles beaucoup plus intelligent
qu'il
ne l'est en réalité. »
Martin Roy

_________________________________
Linux mailing list
[email protected]
http://lists.parinux.org/mailman/listinfo/linux

_________________________________
Linux mailing list
[email protected]
http://lists.parinux.org/mailman/listinfo/linux

Répondre à