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
