Bonjour.
J'ai un dossier qui contient environ 2000 fichiers fichiers musicaux. Je l'ai listée dans un simple fichier texte (liste1.txt). Cette liste, je l'ai recopiée dans un second fichier texte (liste2.txt) et j'ai procédé à de nombreuses modifications (j'ai fait ça petit à petit car c'est vraiment chiant et j'ai maintenant terminé).
Ce que je voudrais, c'est à partir de ces deux listes, renommer les fichiers en allant chercher l'ancien nom dans la liste 1 et en le remplaçant par le nouveau nom de la liste 2. Ces deux listes sont bien entendu parfaitement "synchronisées".
Merci.
Un bash de renommage conséquent
Un bash de renommage conséquent
Linux Mint 21.3 Virginia | Cinnamon 6.0.4
- cyrille
- Administrateur du site
- Messages : 12448
- Enregistré le : mar. 19 sept. 2017 08:49
- Localisation : Nowhere
- Contact :
Re: Un bash de renommage conséquent
Tous les morceaux sont dans le même dossier ?
Si oui, lecture ligne par ligne des 2 fichiers.
- si correspondance, tu passes
- sinon tu renommes
Si dans des dossiers différents ça va se compliquer
Sinon, passer par diff ou wdiff
Exemple 2 fichiers file1 et file2
Avec diff
Sans doute plus parlant avec wdiff
Tu renommes que lors du passage sur les lignes différentes. (perso je créerai un 3 fichiers contenant la sortie de wdiff
Ou alors la métodes la plus simple
SI ton second fichier est valide tu renommes tout sans faire de test (ligne par ligne) même ceux non nécessaires
Enfin, qq pistes
Si oui, lecture ligne par ligne des 2 fichiers.
- si correspondance, tu passes
- sinon tu renommes
Si dans des dossiers différents ça va se compliquer
Sinon, passer par diff ou wdiff
Exemple 2 fichiers file1 et file2
Code : Tout sélectionner
cat file1 && echo "========" && cat file2
test
toto
tutu
tata
titi
========
test
tototo
tutu
tatata
titi
Avec diff
Code : Tout sélectionner
diff file1 file2
2c2
< toto
---
> tototo
4c4
< tata
---
Code : Tout sélectionner
wdiff <(nl file1) <(nl file2)
1 test
2 [-toto-] {+tototo+}
3 tutu
4 [-tata-] {+tatata+}
5 titi
Ou alors la métodes la plus simple
SI ton second fichier est valide tu renommes tout sans faire de test (ligne par ligne) même ceux non nécessaires
Enfin, qq pistes
Re: Un bash de renommage conséquent
Les fichiers sont dans le même dossier. Par exemple :
Nom de l'artiste - Titre de la chanson.flac
Devient :
Nom de l'artiste - Titre de la chanson (Version longue).flac
Les noms de fichiers peuvent comporter des tirets (autres que le séparateur artiste/titre), des apostrophes, des parenthèses, des chiffres...
Nom de l'artiste - Titre de la chanson.flac
Devient :
Nom de l'artiste - Titre de la chanson (Version longue).flac
Les noms de fichiers peuvent comporter des tirets (autres que le séparateur artiste/titre), des apostrophes, des parenthèses, des chiffres...
Linux Mint 21.3 Virginia | Cinnamon 6.0.4
- cyrille
- Administrateur du site
- Messages : 12448
- Enregistré le : mar. 19 sept. 2017 08:49
- Localisation : Nowhere
- Contact :
Re: Un bash de renommage conséquent
La méthode wdiff doit marcher , pour la gestion des espaces et autres , mets tes variables entre "guillemets"
Bien sûr entraine toi d’abord sur une copie de ce dossier
Bien sûr entraine toi d’abord sur une copie de ce dossier
Re: Un bash de renommage conséquent
Je ne connais pas du tout ces techniques.
J'ai placé quelques fichiers dans un dossier temporaire. J'y accède avec le terminal. Je place les 2 fichiers texte dans le dossier et je lance ça après avoir ajouté des guillemets :
En retour j'ai commande introuvable après chaque ligne.
Ce n'est pas grave si même les fichiers identiques sont renommés.
J'ai placé quelques fichiers dans un dossier temporaire. J'y accède avec le terminal. Je place les 2 fichiers texte dans le dossier et je lance ça après avoir ajouté des guillemets :
Code : Tout sélectionner
cat file1.txt && echo "========" && cat file2.txt
"Artiste 1 - Chanson 1.flac"
"Artiste 2 - Chanson 2.flac"
========
"Artiste 1 - Chanson 1 (Version longue).flac"
"Artiste 2 - Chanson 2 (Remix).flac"
Ce n'est pas grave si même les fichiers identiques sont renommés.
Linux Mint 21.3 Virginia | Cinnamon 6.0.4
Re: Un bash de renommage conséquent
Bon je crois que j'ai trouvé plus simple :
Et en plus il ne renomme pas les fichiers identiques. Mais est-ce que ça ne va pas planter avec 2000 fichiers ?
Code : Tout sélectionner
mv "Artiste 1 - Titre.flac" "Artiste 1 - Titre (Remix).flac"
Linux Mint 21.3 Virginia | Cinnamon 6.0.4
Re: Un bash de renommage conséquent
Voilà, c'est réglé avec mv, tout s'est fait en 2 secondes. Et ensuite, la fonction Nom de fichier -> Tag de Puddletag a retagué les fichiers tout aussi rapidement...
Linux Mint 21.3 Virginia | Cinnamon 6.0.4