Résolu le 1-04-23 Un bash de renommage conséquent

Postez ici vos scripts Bash, Python, etc.
Répondre
Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Un bash de renommage conséquent

Message par Nerva »

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.
Linux Mint 21.3 Virginia | Cinnamon 6.0.4

Avatar du membre
cyrille
Administrateur du site
Messages : 12448
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Un bash de renommage conséquent

Message par cyrille »

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

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
---
Sans doute plus parlant avec wdiff ;)

Code : Tout sélectionner

wdiff <(nl file1) <(nl file2)
     1	test
     2	[-toto-]	{+tototo+}
     3	tutu
     4	[-tata-]	{+tatata+}
     5	titi
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 ;)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Re: Un bash de renommage conséquent

Message par Nerva »

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...
Linux Mint 21.3 Virginia | Cinnamon 6.0.4

Avatar du membre
cyrille
Administrateur du site
Messages : 12448
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Un bash de renommage conséquent

Message par cyrille »

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 ;)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Re: Un bash de renommage conséquent

Message par Nerva »

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 :

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"
En retour j'ai commande introuvable après chaque ligne.

:arrow: Ce n'est pas grave si même les fichiers identiques sont renommés.
Linux Mint 21.3 Virginia | Cinnamon 6.0.4

Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Re: Un bash de renommage conséquent

Message par Nerva »

Bon je crois que j'ai trouvé plus simple :

Code : Tout sélectionner

mv "Artiste 1 - Titre.flac" "Artiste 1 - Titre (Remix).flac"
Et en plus il ne renomme pas les fichiers identiques. Mais est-ce que ça ne va pas planter avec 2000 fichiers ?
Linux Mint 21.3 Virginia | Cinnamon 6.0.4

Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Re: Un bash de renommage conséquent

Message par Nerva »

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

Répondre