Je suis actuellement aux prises avec des dossiers de musique. Une fois, j'ai décidé de les nommer en suivant le motif: artist - album - year
. J'ai réalisé aujourd'hui que ce n'était pas un choix judicieux et je souhaite maintenant nommer mes répertoires en respectant le modèle: year - artist - album
, car ils apparaîtront ensuite dans l'ordre croissant lorsqu'ils seront répertoriés.
J'ai commencé à renommer à la main, mais avec environ 700 dossiers, il devait y avoir un moyen plus simple. J'ai essayé d'utiliser gprename
mais je ne suis pas très bon en script regex et bash ...
Y a-t-il quelqu'un qui pourrait m'aider à épargner mon pauvre doigt?
Quelques exemples:
Aes Dana - Memory Shell - 2004
Anja Schneider & GummiHz - Back To Back (Remixes Part 2) - 2009
deviendrait
2004 - Aes Dana - Memory Shell
2009 - Anja Schneider & GummiHz - Back To Back (Remixes Part 2)
EDIT: Certains noms d’artistes et d’albums ont des caractères spéciaux tels que And.Id
ou Kool & The Gang
. Bien que chaque répertoire ait -
comme séparateur.
En supposant que vous ayez accès à Perl rename
(généralement disponible dans Ubuntu - merci à @Serg pour avoir clarifié la différence. En cas de doute, appelez /usr/bin/rename
et vous devriez en obtenir le bon), vous pouvez utiliser:
rename -n 's/(.*) - (\d{4})\//$2 - $1/' */
Supprimez -n
après le test pour renommer les répertoires. Cela suppose que tous les albums ont une date comprise entre 1000 et 9999. Probablement raisonnable ...
s/old/new
remplace old
par new
(.*)
enregistrez un nombre quelconque de caractères avec le nom de $1
ultérieurement(\d{4})\/
enregistrez quatre chiffres à la fin de la ligne pour qu'ils soient référencés sous le nom $2
plus tard.*/
correspond à tous les répertoires (pas aux fichiers - merci à @muru de l'aide!)Un simple script Python peut effectuer ce type de travail:
$ tree
.
├── Aes Dana - Memory Shell - 2004
├── Anja Schneider & GummiHz - Back To Back (Remixes Part 2) - 2009
└── rename_dirs.py
2 directories, 1 file
$ ./rename_dirs.py */
$ tree
.
├── 2004 - Aes Dana - Memory Shell
├── 2009 - Anja Schneider & GummiHz - Back To Back (Remixes Part 2)
└── rename_dirs.py
Contenu du script:
#!/usr/bin/env python
from shutil import move;
import sys
for i in sys.argv[1:] :
parts = i[:-1].split('-')
year = parts[-1].strip()
new_name = year + " - " + " - ".join(parts[:-1]).strip()
move(i,new_name)
*/
pour ne fournir que des répertoires comme arguments du script-
. Le nouveau nom de fichier est construit à partir des parties que nous avons extraites.move()
fonction du module shutils
est ce qui renomme réellement les répertoiresNotez l'utilisation: ./rename_dirs.py */