Renommer une masse de fichiers

Postez ici vos scripts Bash, Python, etc.
Répondre
foxbille
Messages : 2
Enregistré le : lun. 12 déc. 2022 16:50

Renommer une masse de fichiers

Message par foxbille »

Bonjour à tous,
J'ai un disque dur contenant ma collec de disques (FLAC), branché en USB sur un raspberry Pi qui fait tourner volumio (ouf !)
J'ai utilisé easyTag pour renommer les pochettes de disque dans l'arborescence des albums (y en a 400 à 500)
Ca m'a complement pourri tous les noms des pochettes qui ont subit l'opération.
Conséquence, sous volumio, l'album n'a plus de pochette.
Depuis mon PC sous linux Mint, je monte le DD volumio à travers le reseau sur /home/bille/Volumio/remote. Pour voir le dégat causé au nom de fichier "pochette de l'
album" :
bille@pcloic:~/Volumio/remote/PrefabSprout$ ls 2005-Andromeda_Heights/
01-Electric_Guitars.flac 08-Avenue_Of_Stars.flac
02-A_Prisoner_Of_The_Past.flac 09-Swans.flac
03-The_Mystery_Of_Love.flac 10-The_Fifth_Horseman.flac
04-Life_s_A_Miracle.flac 11-Weightless.flac
05-Anne_Marie.flac 12-Andromeda_Heights.flac
06-Whoever_You_Are.flac 'cover.jpg'$'\r'
07-Steal_Your_Thunder.flac

Le problème, c'est 'cover.jpg'$'\r'
Je ne sais pas comment renommer ce genre de truc

bille@pcloic:~/Volumio/remote/PrefabSprout$ mv 'cover.jpg'$'\r' cover.jpg
mv: impossible d'évaluer 'cover.jpg'$'\r': Aucun fichier ou dossier de ce type

Premièrement, est-ce que quelqu'un a la commande kivabien ?
Deuxièmement, est-ce que je peux ecrire un script qui explore toute l'arborescence et recherche/remplace les noms erronés ?

Y a des jours ou on ferait mieux de pas toucher à un truc qui marche bien...
Merci de m'avoir lu jusqu'ici
Eric

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

Re: Renommer une masse de fichiers

Message par cyrille »

Code : Tout sélectionner

mv cover.* cover.jpg
Devrait marcher, plus qu'à le mettre sur un script récursif

Code : Tout sélectionner

$ ls
'cover.jpg$\r'
⌚18:05:19 ▶ ragnarok@ragnarok ▷ ~/test/test1
$ mv cover.* cover.jpg
⌚18:05:31 ▶ ragnarok@ragnarok ▷ ~/test/test1
$ ls
cover.jpg


Une piste
https://cbiot.fr/dokuwiki/php-bash:aide ... shrecursif
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

foxbille
Messages : 2
Enregistré le : lun. 12 déc. 2022 16:50

Re: Renommer une masse de fichiers

Message par foxbille »

Superbe,
le mv cover.* cover.jpg marche parfaitement
par contre le ls 'cover.jpg$\r' lui echoue
Merci beaucoup
Je testerai le script récursif plus tard
Eric

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

Re: Renommer une masse de fichiers

Message par cyrille »

par contre le ls 'cover.jpg$\r' lui echoue
C'est à dire ?


Pour le script récursif, sinon un find avec un tube xargs et un motif sur l'extension devrait faire l'affaire une 1 ligne de commande ;)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
f.x0
Messages : 789
Enregistré le : mar. 28 mars 2017 18:32

Re: Renommer une masse de fichiers

Message par f.x0 »

Bonjour,

que donne dans le répertoire concerné ?

Code : Tout sélectionner

ls -l *'cover.jpg$\r'
SOPI

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

Re: Renommer une masse de fichiers

Message par cyrille »

@fx
je n'avais pas demandé cette commande ;)
NOrmal en échec puisque fichier renommé AMA
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
tioker
modérateur
Messages : 980
Enregistré le : sam. 6 mai 2017 00:33
Localisation : Anjou...Feu !
Contact :

Re: Renommer une masse de fichiers

Message par tioker »

Bonsoir,
Je ne regarde pas le détail fourni sur le jpg mais j'ai moi-même été confronté à faire des traitement de masse.
Dans l'exemple qui suit je devais supprimer des fichiers json en nombre mais les fichiers et leurs répertoires contenaient des espaces. Donc j'ai galéré pour trouver ça

Code : Tout sélectionner

(IFS=$'\t\n';liste=$(find . -type f -name '*.json'); for f in "$liste"; do rm $f; done)
Pour faire plus simple (donc en enlevant le traitement des espaces) on peut s'inspirer de ça (je ne fais que l'écho du nom de fichier)

Code : Tout sélectionner

liste=$(find . -type f -name '*.json'); for f in "$liste"; do echo $f\n; done
En espérant avoir [un peu] aidé...
HP Victus 16: Mint 21.3 Cinnamon 6,0,4 + Windows 11 - Ryzen 5 5600H - NVIDIA GeForce GTX 1650 - Mem 16Go - SSD 512Go
pCloud Synchronisation en temps réel des 4 dossiers personnels

Répondre