Page 1 sur 1

[krename] Renommage suivant un pattern (Résolu)

Publié : dim. 19 sept. 2021, 10:35
par Fif91
Bonjour,
J'ai un certain nombre de fichiers, suivant ce modèle de nommage :
- "Magasin - NatureObjet_AAAAMMJJ.ext"

Je souhaiterai désormais, que les fichiers se nomment de la sorte :
- "Magasin - AAAAMMJJ_NatureObjet.ext"

Comment puis-je faire avec krename ou autre outil ?
Merci d'avance pour votre aide. :D

Re: [krename] Renommage suivant un pattern

Publié : dim. 19 sept. 2021, 14:44
par papajoke
bonjour

A tester dans ton répertoire...

Code : Tout sélectionner

ls -1 | sed 's/\./_/g' | awk -F " - |_" '{print "mv \""$0"\" \""$1" - "$3"_"$2"."$4"\""}'
ne change rien :twisted: ne fait que afficher des "mv toto tata" , a adapter si pas bon (si séparateur "." ou "_" dans "NatureObjet" par exemple)

Re: [krename] Renommage suivant un pattern

Publié : dim. 03 oct. 2021, 12:59
par Fif91
Tout d'abord merci pour ta réponse.
Cependant, si j'essaie d'exécuter une ligne obtenue par cette ligne de commande, j'obtiens le message d'erreur suivant, en étant placé dans le dossier :

Code : Tout sélectionner

mv "Pixmania - EeePC_20110603_djvu" "Pixmania - 20110603_EeePC.djvu"
mv: impossible d'évaluer 'Pixmania - EeePC_20110603_djvu': Aucun fichier ou dossier de ce type
EDIT
Le pb est le "_djvu" qui devrait être un ".djvu" au niveau du fichier source.
Comment modifier la ligne de commande ?

Re: [krename] Renommage suivant un pattern

Publié : sam. 16 oct. 2021, 14:00
par Fif91
Une idée ? Je ne comprends pas la ligne de commande en fait.
J'ai tenté, sans succès :
ls -1 | sed 's/\././g' | awk -F " - |_" '{print "mv \""$0"\" \""$1" - "$3"_"$2"."$4"\""}'

Re: [krename] Renommage suivant un pattern

Publié : lun. 18 oct. 2021, 09:20
par Chon
Salut,

Il existe des solutions GUI de renommage par lot comme Inviska Rename qui a la bonne idée d'exister en AppImage et donc à tester sans installation et sans modération. :wink:

Re: [krename] Renommage suivant un pattern

Publié : mar. 19 oct. 2021, 12:51
par papajoke
désolé, je n'avais pas testé (réfléchi :oops: le sed altère le $0)

Code : Tout sélectionner

ls -1 | awk -F "[-_ \.]" '{print "mv \""$0"\" \""$1" - "$5"_"$4"."$6"\""}'
on decoupe la chaine avec les caractères espace,point,tiret et moins et on affiche les segments dans l'ordre désiré

Re: [krename] Renommage suivant un pattern

Publié : lun. 01 nov. 2021, 13:00
par Fif91
J'ai beaucoup de mal à comprendre la ligne proposée, mais on s'y approche.
Seul bémol :
- Magasin peut contenir des espaces (ie "Leroy Merlin")
- L'extension est supprimée dans la cible

Exemple de nom de fichiers :
- "LDLC - Souris ergonomique Logitech_20190613.pdf"
- "Darty - Tablette HTC Nexus 9_20150626.pdf"
- "Leroy Merlin - Tondeuse_20180421.djvu"

Re: [krename] Renommage suivant un pattern

Publié : lun. 01 nov. 2021, 13:44
par benjarobin
Vive les regex :

Code : Tout sélectionner

find -type f | while read f ; do echo mv "$f" $(sed -r "s|^(.*/)?([^/-]+) - (.+)_([0-9]+)\.(.+)$|\1\2 - \4_\3.\5|" <<< "$f") ; done
Si cela te plait, il suffit de remplacer echo mv par mv

Ou via krename (que je ne connaissait pas). Voir l'image pour savoir comment j'ai fait : https://ibb.co/qpzgMBv

Re: [krename] Renommage suivant un pattern

Publié : sam. 13 nov. 2021, 11:20
par Fif91
Nickel chrome !!!
Les 2 solutions fonctionnent.
Comment dire... merci benjarodin