J'aimerais renommer plusieurs fichiers en même temps, ceux-ci étant du type "01 - titre1.wav", "02 - titre2.wav", "03 - titre3.wav", …, en "album - titre1.wav", "album - titre2.wav", "album - titre3.wav", … (rem : le mot album étant constant). Donc, j'aimerais remplacer tout les numéros "0i" par le mot album.
Cela est-il possible en tapant une boucle "for i in *.wav ; do mv …" dans une console par exemple ? Avez-vous une autre idée ?
Merci d'avance ;).
# Renommer plusieurs fichiers en même temps
Posté par Fab . Évalué à 2.
# "ren" roxor
Posté par tgl . Évalué à 2.
# for f in *.wav ; do mv "${f}" "album${f#??}" ; done
Mais si tu n'es pas à l'aise avec ça, le plus simple serait d'installer un programme appelé "ren", si ta distrib le propose. Après, tu pourras faire par exemple :
# ren "?? - *.wav" "album - #3.wav"
Là le "#3" désigne le 3ème wildcard utilisé dans le pattern (les 2 premiers "?" étant les deux premiers). Ou plus simple, mais qui marchera mal si tu as des " - " aussi dans le titre :
# ren "* - *.wav" "album - #2.wav"
[^] # Re: "ren" roxor
Posté par badside . Évalué à 1.
Tout d'abord, merci à tous pour vos réponses ;).
J'ai une mandrake 10.0 et le programme "ren" n'est pas proposé.
De toute façon, la première ligne de commande marche nickel. Peux-tu m'expliquer la syntaxe de "album${i#??} (les # et ??) afin que je puisse réutiliser cela dans un autre cas.
Merci ;)
[^] # Re: "ren" roxor
Posté par tgl . Évalué à 5.
Argh. Pas de bol...
Enfin, tu peux toujours te l'installer from-sources si tu veux :
http://freshmeat.net/projects/ren(...)
> Peux-tu m'expliquer la syntaxe de "album${i#??}
`man bash` :p
Bon, nan, c'est tout simple: "${variable#pattern}" s'évalue en la variable (là c'était notre nom de fichier, $f) dont on retire au début (c'est l'opérateur "#" qui le dit) le pattern (dans notre cas, "??", c'est à dire deux caractères quels qu'ils soient).
Pour ta culture, les patterns peuvent être des chaines quelconques ou bien contenir des caractères spéciaux (jokers ou wildcards ou que sais-je encore), qui seront interprétés comme pour l'expansion des noms de fichiers :
- "*" reconnait une chaine quelconque (celui là t'es au moins familier dans le cas de l'expansion des noms de fichiers, genre `ls *.jpg`)
- "?" reconnait un caractère quelconque
- "[abc]" reconnait les cactères "a", "b", ou "c"
- "[0-9]" reconnait les chiffres de 0 à 9 (on aurait pu l'utiliser ici d'ailleurs, genre "album${f#[0-9][0-9]}"), "[a-z]" les lettres miniscules de "a" à "z", etc.
En plus de l'opérateur "#", y'en a qlqs autres dans le même genre:
- "##" fait presque pareil sauf qu'il choisi si ambiguité la plus longue des correspondance ("#" lui prend la plus courte, enfin de toute façon ça ne fait une différence que si on utilise "*" qui est le seul wildcard de longueur variable)
- "%" et "%%" marchent pareil, sauf qu'ils suppriment à la fin de la chaine contenue par la variable
- "/" est un opérateur de substitution:
# foo="plip plop plip plop plip"
# echo "${foo/plop/pluuuup}"
plip pluuuup plip plop plip
- "//" aussi, sauf qu'il fait autant de substitutions que possible, et pas juste la première:
# echo "${foo//plop/pluuuup}"
plip pluuuup plip pluuuup plip
Bon, maintenant `man bash` pour plus de détails et les autres opérateurs... (cherches la section "EXPANSION", sous-section "Parameter Expansion". Elle est bonne à connaitre.)
Et quant au "album" en début de chaine, je suppose que tu auras deviné :)
[^] # Re: "ren" roxor
Posté par badside . Évalué à 1.
++;)
# Renomer des fichier pour que * les liste dans l'ordre numérique
Posté par jko . Évalué à 1.
Pour éviter que 10.png soit listé avant 2.png, par exemple, le principe est de renomer en 0002.png et 0010.png, (on peu mettre plus ou moin de 0, ici 4 chiffres, donc %04d :
for i in *.png ; do num=$(echo "$i" |sed 's/[^0-9]//g'); mv -v $i `printf "%04d.png" $num`; done
# Une autre façon...
Posté par tuxic . Évalué à 3.
$ man rename
Bon, d'accord... Alors plutôt comme ceci :
$ rename 's/^\d\d/album/' *.wav
Qui va remplacer les 2 premiers chiffres (\d\d) en "album".
Voila, Voila ...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.