Renommer en masse avec bash
Voici une astuce pour renommer en masse des fichiers avec bash directement. Le but est d'obtenir, au lieu de artiste - album - numero - titre.mp3 quelque chose de plus simple comme numero - titre.mp3.
Pour cela, nous allons utiliser une boucle for ainsi qu'une notation un peu spéciale de variable bash.
for FILENAME in * ; do mv "$FILENAME" "${FILENAME#artiste\\ -\\ album\\ -\\ }"; done
La notation ${VARIABLE#asupprimer} permet d'interpréter la variable en supprimant du contenu (ici : artiste - album - ).
On renomme donc, pour chaque valeur de * (comme si je faisais un ls dans mon dossier courant), le fichier $FILENAME vers le fichier $FILENAME dont on a enlevé artiste - album - .
En utilisant un double dièze ##, on matche sur le plus long au lieu de faire sur le plus court quand on utilise un wildcard telle que l'étoile *.
Par exemple : admettons que $FILENAME soit égal à Pornophonique - 8-Bit Lagerfeuer - 01 - Sad Robot.ogg.
${FILENAME#P*\\ -\\ } sera équivalent à 8-Bit Lagerfeuer - 01 - Sad Robot.ogg
tandis que
${FILENAME##P*\\ -\\ } sera équivalent à Sad Robot.ogg
Des questions ?
Source : http://linuxgazette.net/issue57/eyler.html
Ah et pis : http://www.jamendo.com/en/search/all/pornophonique