mulren.sh est un script bash de renommage multiple de fichiers, selon un "pattern" donné.
Pourquoi mulren.sh ?
Je cherchais depuis longtemps un moyen de renommer une série de fichiers, grâce un système proche de celui utilisé par Total Commander (gestionnaire de fichiers sous Windows).
J'en ai essayé plusieurs, par exemple pyrenamer, mais ce dernier utilise une logique complètement différente. Le plus proche de ce que je recherchais est purrr, mais il est trop limité à mon goût : il n'a pas de balise <Nx-y> notamment, que j'utilise beaucoup, ni de remplacement de caractères générique.
En plus de cela je voulais me remettre au bash, donc autant écrire mon script sur mesure.
Le script s'utilise de la façon suivante :
Usage: mulren.sh "pattern" file1 file2 etc.
Pattern can contain special tokens:
<N> Name of the file without extension.
<E> Extension of the file.
<Nx-y> Substring of the file name from position x to y.
<Nx-> Substring of the file name from position x to the end.
<N-y> Substring of the file name from the beginning to position y.
<Cx-y-z> Counter with x=start, y=step, z=nbDigits.
Only one counter allowed.
<Rx/y> Replace all x with y in the original file name.
<Rx/> Remove all x in the original file name.
Quelques exemples d'utilisation.
Des fichiers de type
testfile_a.txt à renommer en
hello_file001.txt :
./mulren.sh "hello_<N5-8><C1-1-3>.<E>" *.txt
testfile_a.txt -> hello_file001.txt
testfile_b.txt -> hello_file002.txt
testfile_c.txt -> hello_file003.txt
Rename the files? [y/N]
y
3 file(s) renamed.
Avant toute chose, le script présente les noms de fichiers avant -> après. On confirme ensuite (ou non) le renommage.
Dans ce "pattern", c'est une simple utilisation de sous-chaîne de caractère <Nx-y>, suivi d'un compteur sur 3 chiffres.
Autre exemple, avec des fichiers de type "
Artist - Track 01.ogg" à renommer en
Artist_Track_01.ogg :
./mulren.sh "<R- /><R /_><N>.<E>" *.ogg
Artist - Track 01.ogg -> Artist_Track_01.ogg
Artist - Track 02.ogg -> Artist_Track_02.ogg
Artist - Track 03.ogg -> Artist_Track_03.ogg
Rename the files? [y/N]
y
3 file(s) renamed.
Ici, <R- /> supprime toute occurence de "- ", et <R /_> remplace les espaces par des "_". Ensuite, <N>.<E> pour garder le même nom.extension, après remplacement.
Pour éviter tout risque, le renommage est refusé si chaque nom en sortie n'est pas différent des autres.
Si tout est ok, il suffit de donner confirmation pour renommer le lot.
En espérant que ça sera utile à quelqu'un d'autre 😉
Questions, commentaires etc. bienvenus.