Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

snake57 a écrit :
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