Script bash pour renommer des dossiers en masse

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
Aka_de_Kebnekaise
Membre
Membre
Messages : 72
Inscription : 02 mai 2021, 11:07
Status : Hors-ligne

Bonjour !
Je fais un petit peu de tri dans ma musicothèque que j'organise ainsi :

*/Musiques/Ariste/Album (AAAA)/... ("AAAA" étant l'année de sortie de l'album).

J'aimerais changer la façon dont je nomme les dossiers des albums pour :

*/Musiques/Artiste/AAAA_Album/...

Étant donné que j'ai beaucoup d'albums, j'ai pensé à utiliser un script pour renommer en masse tous les dossiers d'un coup. Avec de l'aide d'internet, voici ce que je suis parvenu à obtenir :

Code : Tout sélectionner

#!/bin/bash

for dir in **/*/;do
    [[ $dir =~ (.*)\ \(([[:digit:]]{4})\)/$ ]] && 
    echo "${BASH_REMATCH[0]}" "${BASH_REMATCH[2]}_${BASH_REMATCH[1]% }/"
done
Voici un exemple du résultat de ce script :

Code : Tout sélectionner

/Musiques/TEST/Test n°1$ ./test.sh
Mitski/Be the Cowboy (2018)/ 2018_Mitski/Be the Cowboy/
Mitski/Bury Me at Makeout Creek (2014)/ 2014_Mitski/Bury Me at Makeout Creek/
Mitski/Laurel Hell (2022)/ 2022_Mitski/Laurel Hell/
Mitski/The Land Is Inhospitable and So Are We (2023)/ 2023_Mitski/The Land Is Inhospitable and So Are We/
The Beatles/Abbey Road (1969)/ 1969_The Beatles/Abbey Road/
The Beatles/Revolver (1966)/ 1966_The Beatles/Revolver/
The Beatles/She Loves You (1963)/ 1963_The Beatles/She Loves You/
Ce n'est encore tout à fait ça puisque le script renomme selon ce schéma : */Musiques/Ariste/Album (AAAA)/... --> */Musiques/AAAA_Artiste/Album/...
Mais je ne m'y connais pas assez pour savoir ce qu'il faudrait changer :blush:

Est-ce que vous avez une idée ?
Aka

____
EDIT :
Je me demandais : vaut-il mieux que j'utilise un underscore ou un espace pour séparer la date de l'album? sachant que j'ai beaucoup d'artistes et d'albums avec de espaces dans leur nom...
Répondre