#1 Le 25/10/2010, à 00:28
- snake57
renommage de fichier en masse
Bonjour à tous,
J'ai un dossier contenant plusieurs fichiers. Ces fichiers sont nommés ainsi :
01.nom.de.fichier.mp3
02.autre.nom.de.fichier.mp3
03.encore.autre.nom.mp3
J'aimerais trouver la ou les commandes à passer pour obtenir un nommage de la sorte :
artiste-nom_de_fichier.mp3
artiste-autre_nom_de_fichier.mp3
artiste-encore_autre_nom.mp3
J'ai essayé de bidouiller avec mv mais je n'arrive pas à faire ce que je veux.
Quelqu'un à t'il une solution?
EDIT : Juste pour dire que je ne veux pas récupérer le nom de l'artiste dans les tags du fichier. Vu que tout le répertoire contient le même artiste je peux écrire à la main son nom dans la console.
Dernière modification par snake57 (Le 25/10/2010, à 01:02)
Toshiba Satellite L775-11N
Hors ligne
#2 Le 25/10/2010, à 00:47
- mel4
Re : renommage de fichier en masse
Pas en terminal mais en GUI, il y a Métamorphose qui permet d'utiliser des expressions régulières pour renommer.
Hors ligne
#3 Le 25/10/2010, à 00:53
- snake57
Re : renommage de fichier en masse
Bonsoir mel4,
merci pour ta réponse, mais je cherche justement à le faire à la console.
Toshiba Satellite L775-11N
Hors ligne
#4 Le 25/10/2010, à 02:24
- ehmicky
Re : renommage de fichier en masse
J'ai compris que ce que tu voulais faire, c'est modifier dans un répertoire Repertoire des fichiers .mp3 dont le nom de fichier commence par des chiffres, et remplacer ces chiffres et le point qui suit par le nom d'un artiste suivi d'un tiret :
shopt -s extglob
artiste="Chambao"
repertoire="/mon/repertoire/a/musique"
for fich in ${repertoire}/+([[:digit:]])*.mp3 ; do
mv "$fich" "${fich%/*}/$artiste-${fich##*/+([[:digit:]]).}"
done
Je ne savais pas si tout voulais aussi remplacer les points par des underscores.
Dernière modification par ehmicky (Le 25/10/2010, à 02:29)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#5 Le 25/10/2010, à 02:38
- snake57
Re : renommage de fichier en masse
Ehmicky tu me propose un script, le pb c'est que tout mes dossiers ne contiennent pas des nom de fichier formater de la même manière.
Il faudra donc que je réédite le script à chaque utilisation.
C'est pourquoi j'aurais voulu réaliser cela en ligne de commande. Comme ça je me place à chaque fois dans le dossier qui m'intéresse et je tape la ou les commande(s) adaptée(s).
Toshiba Satellite L775-11N
Hors ligne
#6 Le 25/10/2010, à 03:54
- ehmicky
Re : renommage de fichier en masse
Il faut juste rajouter des point-virgules.
Si tu veux raccourcir le tout, tu peux mettre le shopt -s extglob directement dans ton ~/.bashrc, puis une fois dans le répertoire que tu veux :
for fich in *.mp3 ; do mv "$fich" "${fich%/*}/Chambao-${fich##*/+([[:digit:]]).}" ; done
a adapter selon.
Dernière modification par ehmicky (Le 25/10/2010, à 03:56)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#7 Le 25/10/2010, à 04:11
- snake57
Re : renommage de fichier en masse
snake@snake-laptop:~/Musique/test$ for fich in *.mp3 ; do mv "$fich" "${fich%/*}/Chambao-${fich##*/+([[:digit:]]).}" ; done
mv: accès à «01.nom.de.fichier.mp3/Chambao-01.nom.de.fichier.mp3»: N'est pas un dossier
mv: accès à «02.autre.nom.de.fichier.mp3/Chambao-02.autre.nom.de.fichier.mp3»: N'est pas un dossier
mv: accès à «03.encore.autre.nom.mp3/Chambao-03.encore.autre.nom.mp3»: N'est pas un dossier
snake@snake-laptop:~/Musique/test$
Toshiba Satellite L775-11N
Hors ligne
#8 Le 25/10/2010, à 06:19
- ®om
Re : renommage de fichier en masse
$ ls
01.nom.de.fichier.mp3 02.autre.nom.de.fichier.mp3 03.encore.autre.nom.mp3
$ rename 's/^[[:digit:]]+\./artist-/' *.mp3
$ ls
artist-autre.nom.de.fichier.mp3 artist-encore.autre.nom.mp3 artist-nom.de.fichier.mp3
Il reste les '.' à remplacer par des '_'.
Dernière modification par ®om (Le 25/10/2010, à 06:26)
Hors ligne
#9 Le 25/10/2010, à 16:04
- ehmicky
Re : renommage de fichier en masse
snake@snake-laptop:~/Musique/test$ for fich in *.mp3 ; do mv "$fich" "${fich%/*}/Chambao-${fich##*/+([[:digit:]]).}" ; done mv: accès à «01.nom.de.fichier.mp3/Chambao-01.nom.de.fichier.mp3»: N'est pas un dossier mv: accès à «02.autre.nom.de.fichier.mp3/Chambao-02.autre.nom.de.fichier.mp3»: N'est pas un dossier mv: accès à «03.encore.autre.nom.mp3/Chambao-03.encore.autre.nom.mp3»: N'est pas un dossier snake@snake-laptop:~/Musique/test$
C'était for fich in ./*.mp3 et non for fich in *.mp3
Sinon, rename sera plus simple en fait.
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne