💾 Archived View for unbon.cafe › lejun › posts › 20230609_renameSerie.gmi captured on 2023-07-10 at 13:43:25. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Suite au téléchargement d'une série TV je me suis retrouvé avec une centaine de fichiers qui, par chance, venaient d'une même source et dont le nom suivait un format spécifique. Pour le rapprocher du mien[1] j'ai utilisé la commande `rename`, équivalent de sed[2] mais exclusivement pour des noms de fichiers.
J'utilise la commande `rename` par soucis de simplicité (une seule ligne de commande), mais il est tout à fait imaginable de créer une boucle utilisant la commande `mv` commune. Par ailleurs, attention de vérifier que c'est bien le `rename` Perl qui est utilisé et non un autre comme celui d'Util-Linux fournit de base sur certains systèmes comme Debian 11.
Le nom de tous les fichiers suivent un même format :
<Nom de série>.S<numéro de saison>E<numéro d'épisode>.<Langue>.<Qualité vidéo>.<Codec audio>-<Source>.mp4
Après l'opération, une partie des informations sera éliminée du nom des fichiers. Perte à mon sens négligeable puisque relevant de détails techniques qui ne me serviraient pas sauf cas spécifique, et probablement présents dans les métadonnées des fichiers.
<Nom de série>_s<numéro de saison>e<numéro d'épisode>.mp4
À noter que le format diffère de celui que j'utilise habituellement pour mes fichiers : la date et la source m'intéressent ici peu, et cela se rapproche des formats utilisés par Kodi[3] et Plex[4]. J'ai choisi de ne pas inclure la date dans le nom de fichier, les deux spécifications étant assez floues sur l'idée d'une série qui soit à cheval sur plusieurs années.
Une substitution simple permet de transformer les noms de fichiers en réutilisant certaines informations y étant déjà présentes.
La commande aura une syntaxe similaire à sed :
rename -n -v 's/(.*)\.S(\d*)E(\d*).*/\L$1_s$2e$3/' ./*.mp4
L'argument `-n` permet de tester la commande sans qu'il n'y ait de modification irréversible.
`\L` en préfixe de `$1` permet de transformer la variable en minuscule, ce qui se rapproche du camelCase que j'utilise.
[1] Nom de fichier, LeJun 2023