#1 Le 19/10/2018, à 17:12
- bobilesinge
[Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Bonjour,
Désolé de vous embêter avec ça.
J'ai une liste de fichiers type: A_1.pdf , A_2.pdf ... jusqu'à plusieurs centaines.
Mon problème est que ces fichiers ne sont pas bien classé par ordre alphanumérique car pas de 0 devant les nombres <100 (A_12.pdf au lieu de A_012.pdf)
Je me demandais si l'un d'entre vous aurait une idée simple pour rajouter les 0 ? J'imagine qu'en ligne de commande ça devrait pouvoir se faire, mais comment exactement, je ne sais pas.
(Il y a du texte en plus derrière les nombres type A_02-xxxx.pdf ; A est identique pour tous les fichiers, xxxxx variable)
Merci beaucoup
Dernière modification par bobilesinge (Le 20/10/2018, à 15:09)
Hors ligne
#2 Le 19/10/2018, à 17:19
- bobilesinge
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Peut-être quelque chose du genre : si dans les n premiers caractères du nom de fichier, nombre de chiffres =2, ajouter un 0 en position m (et 2 '0' si 1 chiffres) ? (mais je ne sais pas le coder :-s)
(et du coup ça deviendrait un script j'imagine et non plus une ligne de commande ?)
Hors ligne
#3 Le 19/10/2018, à 17:33
- Shanx
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#4 Le 19/10/2018, à 17:41
- Postmortem
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Salut,
prefixe="A_" # mettre à jour avec le bon préfixe
for fic in "$prefixe"*.pdf
do
numero=${fic#"$prefixe"}
numero=${numero%%-*}
suffixe=${fic#"$prefixe$numero"}
printf -v nouveau_nom '%s%03d%s' "$prefixe" "$numero" "$suffixe"
echo mv -i "$fic" "$nouveau_nom" # enlever le « echo » si les lignes renvoyées te conviennent
done
Il faut que tes fichiers respectent bien le modèle <prefixe><numéro à modifier>-<n'importe quoi>.pdf
Et faut se placer dans le répertoire contenant les fichiers avant de lancer les commandes.
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#5 Le 19/10/2018, à 17:56
- bobilesinge
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Les deux fonctionnent ! Merci beaucoup
@Shankx : Bien vu! Ma recherche n'avait pas abouti désolé. Et merci pour la commande toute simple
@Postmortem: merci beaucoup (et bravo pour le code fait aussi vite!)
Bonne soirée et bon WE
Hors ligne
#6 Le 19/10/2018, à 18:10
- bobilesinge
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Hum, quelqu'un connaîtrait la commande pour appliquer la solution de Shanx aux fichiers des sous-dossiers?
(J'ai fait une recherche mais là je n'arrive pas )
Merci beaucoup
Hors ligne
#7 Le 19/10/2018, à 18:12
- Watael
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
puisqu'elle est connue aussi, on pourrait directement placer l'extension dans une variable...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 20/10/2018, à 07:26
- Brunod
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Sinon pyrenamer n'est pas mal, et permet de travailler dans un gui avec test possible.
Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis
Hors ligne
#9 Le 20/10/2018, à 08:27
- cqfd93
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Bonjour,
Pourquoi [question supp. svp] dans le titre ?
− cqfd93 −
Hors ligne
#10 Le 20/10/2018, à 08:46
- bobilesinge
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
merci pour vos réponses
@Watael : Merci mais je n'ai actuellement pas le niveau, désolé
@Brunod: merci
@cqfd93: le sujet initial est résolu, je demandais timidement si quelqu'un *saurait comment faire pour appliquer le script de @Shanx aux sous-dossiers d'un même dossier* (j'ai un dossier avec quelques dizaines de sous-dossiers à traiter). J'ai fait une recherche, mais je n'arrive pas ! (Pourtant je suis sur que ça ne devrait pas être compliqué :-/
Merci beaucoup
Hors ligne
#11 Le 20/10/2018, à 09:06
- cqfd93
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
@cqfd93: le sujet initial est résolu,…
Quand c'est résolu, on met [Résolu] au début du titre et la discussion reste disponible pour d'autres membres qui pourraient avoir le même problème mais ça n'empêche pas de continuer la discussion.
Ce « supp. » est ambigu : ça peut aussi bien vouloir dire « supplémentaire » que « supprimée »…
− cqfd93 −
Hors ligne
#12 Le 20/10/2018, à 09:36
- Shanx
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Encore une fois non testé :
for d in ./*/ ; do cd "$d" && rename 's/\d+/sprintf("%03d",$&)/e' A_*; done
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#13 Le 20/10/2018, à 10:09
- Postmortem
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
A vu de nez, sans tester, je ne pense pas que ça fonctionne.
Le cd va planter pour aller dans le 2eme sous répertoire car tu es dans le premier et non plus à l'endroit où tu étais quand tu fais le for d in ./*/
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#14 Le 20/10/2018, à 10:44
- pingouinux
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Bonjour,
Peut-être, en reprenant la commande de Shanx :
shopt -s globstar
rename 's/\d+/sprintf("%03d",$&)/e' **/A_*
Édité Cette commande n'est pas correcte (voir #18):
Dernière modification par pingouinux (Le 20/10/2018, à 11:53)
Hors ligne
#15 Le 20/10/2018, à 10:57
- Shanx
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
A vu de nez, sans tester, je ne pense pas que ça fonctionne.
Le cd va planter pour aller dans le 2eme sous répertoire car tu es dans le premier et non plus à l'endroit où tu étais quand tu fais le for d in ./*/
Toujours sans tester : alors il suffit de remplacer "./*/" par le chemin absolu.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#16 Le 20/10/2018, à 11:14
- Postmortem
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
rep=/chemin/vers/fichier # mettre le chemin complet vers le répertoire de départ
prefixe="A_" # mettre à jour avec le bon préfixe
shopt -s globstar
for fic in "$rep"/**/"$prefixe"*.pdf
do
numero=${fic##*/"$prefixe"}
numero=${numero%%-*}
suffixe=${fic##*/"$prefixe$numero"}
rep_fic=${fic%/*}
printf -v nouveau_nom '%s/%s%03d%s' "$rep_fic" "$prefixe" "$numero" "$suffixe"
echo mv -i "$fic" "$nouveau_nom" # enlever le « echo » si les lignes renvoyées te conviennent
done
J'ai pas testé.
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#17 Le 20/10/2018, à 11:18
- Postmortem
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Postmortem a écrit :A vu de nez, sans tester, je ne pense pas que ça fonctionne.
Le cd va planter pour aller dans le 2eme sous répertoire car tu es dans le premier et non plus à l'endroit où tu étais quand tu fais le for d in ./*/Toujours sans tester : alors il suffit de remplacer "./*/" par le chemin absolu.
J'utilise pas rename, y'a 2-3 commandes qui s'appellent comme ça et qui ne marchent pas pareil.
Mais ce rename, s'il y a un numéro dans le chemin, il va remplacer le numéro du chemin ou il se concentre seulement sur le nom de fichier ?
Et s'il se concentre bien sur le nom de fichier, s'il y a un numéro dans le prefixe, c'est celui là qui va être changé, non ?
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#18 Le 20/10/2018, à 11:52
- pingouinux
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Mais ce rename, s'il y a un numéro dans le chemin, il va remplacer le numéro du chemin ou il se concentre seulement sur le nom de fichier ?
Ah oui, en effet. Ma commande en #14 ne peut donc pas marcher.
Hors ligne
#19 Le 20/10/2018, à 15:09
- bobilesinge
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Merci à tous, vous êtes trop cool !
@Shanx : ça fonctionne avec le chemin absolu (merci pour la remarque de @Postmortem
@Postmortem : ça fonctionnait à peu près, mais chose bizarre j'avais quelques noms de fichiers où bizarrement ça m'effaçait un chiffre du nombre (type 7 --> 000 au lieu de 007) du nom de fichier, sur quelques fichiers, et lorsque je relançait la commande dans le même répertoire, ça m'en effaçait quelques autres jusqu'à ce que ça se stabilise même en relançant (avec une majorité de fichiers ou ça marchait bien). Peut-être des irrégularités dans les noms de fichiers comme ça s'appuyait sur le suffixe je crois.
@Pangouinux j'ai du coup pas essayé.
Merci et bon WE
Je note [Résolu] @cqfd93, merci
Hors ligne
#20 Le 20/10/2018, à 15:47
- Postmortem
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
T'as un nom de fichier (avec son chemin) où ça foire ?
C'est histoire de comprendre où mon code merdouille.
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#21 Le 20/10/2018, à 17:07
- bobilesinge
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Noms de fichiers originaux:
ITEM 10 - VIOLENCE SEXUELLE.pdf
ITEM 12 - RESPONSABILITE MEDICALE.pdf
ITEM 7 - DROITS DES PATIENTS.pdf
ITEM 8 - ETHIQUE-DEONTOLOGIE.pdf
ITEM 9 - CERTIFICAT-REQUISITION.pdf
ITEM 9 - DECES-PRELEVEMENT.pdf
ont donné:
ITEM 000- CERTIFICAT-REQUISITION_3.pdf
ITEM 000- DECES-PRELEVEMENT_3.pdf
ITEM 000- ETHIQUE-DEONTOLOGIE_1.pdf
ITEM 000- RESPONSABILITE MEDICALE_2.pdf
ITEM 000- VIOLENCE SEXUELLE_1.pdf
ITEM 007- DROITS DES PATIENTS_4.pdf
Et ce après avoir lancé plusieurs fois la commande. Au début seuls un ou deux noms de fichiers étaient concernés, puis tous les autres sauf le " 7 " meme en relançant à nouveau. J'ai relancé car j'étais intrigué en effet
Hors ligne
#22 Le 20/10/2018, à 17:13
- bobilesinge
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
ou encore plus surprenant:
./ITEM 11 - SOINS PSYCHIATRIQUES SANS CONSENTEMENT_7.pdf
./ITEM 117 - HANDICAP MENTAL-PSYCHIQUE_4.pdf
./ITEM 141 - DEUIL_2.pdf
./ITEM 346 - AGITATION-DELIRE AIGU_3.pdf
./ITEM 347 - ATTAQUE DE PANIQUE_2.pdf
./ITEM 348 - SUICIDE_3.pdf
./ITEM 56 - TROUBLE SEXUALITE_0_4.pdf
./ITEM 58 - FDR-DEPISTAGE-PREVENTION PSY_1.pdf
./ITEM 59 - CLASSIFICATION TROUBLES MENTAUX_3.pdf
./ITEM 60 - OFFRE DE SOINS EN PSYCHIATRIE_3.pdf
./ITEM 61 - SCHIZOPHRENIE_5.pdf
./ITEM 62 - TROUBLE BIPOLAIRE_4.pdf
./ITEM 63 - TROUBLE DELIRANT PERSISTANT_1.pdf
./ITEM 64 - TROUBLE ANXIEUX_10.pdf
./ITEM 64 - TROUBLE DEPRESSIF_3.pdf
./ITEM 64 - TROUBLE PERSONNALITE_3.pdf
./ITEM 65 - TROUBLE ENVAHISSANT DU DEVELOPPEMENT_5.pdf
./ITEM 66 - TROUBLE COMPORTEMENT ENFANT_5.pdf
./ITEM 67 - TROUBLE PSYCHIQUE GROSSESSE-POSTPARTUM_3.pdf
./ITEM 69 - TROUBLE DU COMPORTEMENT ALIMENTAIRE_0_8.pdf
./ITEM 70 - TROUBLE SOMATOFORME_2.pdf
./ITEM 71 - PSYCHOTHERAPIE_3.pdf
./ITEM 72 - PSYCHOTROPE_13.pdf
./ITEM 74 - ADDICTION ALCOOL_3.pdf
./ITEM 75 - ADDICTION PSYCHOTROPES_1.pdf
./ITEM 76 - ADDICTION DROGUES_7.pdf
./ITEM 77 - ADDICTION COMPORTEMENTALE_2.pdf
./ITEM 78 - DOPAGE_1.pdf
donne, pareil, après la commande lancée plusieurs fois (5 à 10 fois de mémoire):
./ITEM 000- SOINS PSYCHIATRIQUES SANS CONSENTEMENT_7.pdf
./ITEM 002- TROUBLE ANXIEUX_10.pdf
./ITEM 002- TROUBLE DEPRESSIF_3.pdf
./ITEM 002- TROUBLE ENVAHISSANT DU DEVELOPPEMENT_5.pdf
./ITEM 002- TROUBLE PERSONNALITE_3.pdf
./ITEM 003- PSYCHOTHERAPIE_3.pdf
./ITEM 003- TROUBLE SEXUALITE_0_4.pdf
./ITEM 003- TROUBLE SOMATOFORME_2.pdf
./ITEM 004- ADDICTION ALCOOL_3.pdf
./ITEM 004- ADDICTION PSYCHOTROPES_1.pdf
./ITEM 004- OFFRE DE SOINS EN PSYCHIATRIE_3.pdf
./ITEM 004- SCHIZOPHRENIE_5.pdf
./ITEM 005- CLASSIFICATION TROUBLES MENTAUX_3.pdf
./ITEM 005- FDR-DEPISTAGE-PREVENTION PSY_1.pdf
./ITEM 005- PSYCHOTROPE_13.pdf
./ITEM 006- TROUBLE DU COMPORTEMENT ALIMENTAIRE_0_8.pdf
./ITEM 007- DOPAGE_1.pdf
./ITEM 022- TROUBLE BIPOLAIRE_4.pdf
./ITEM 023- TROUBLE DELIRANT PERSISTANT_1.pdf
./ITEM 024- TROUBLE COMPORTEMENT ENFANT_5.pdf
./ITEM 025- TROUBLE PSYCHIQUE GROSSESSE-POSTPARTUM_3.pdf
./ITEM 026- ADDICTION DROGUES_7.pdf
./ITEM 027- ADDICTION COMPORTEMENTALE_2.pdf
./ITEM 117- HANDICAP MENTAL-PSYCHIQUE_4.pdf
./ITEM 141- DEUIL_2.pdf
./ITEM 346- AGITATION-DELIRE AIGU_3.pdf
./ITEM 347- ATTAQUE DE PANIQUE_2.pdf
./ITEM 348- SUICIDE_3.pdf
(Je retire ce que j'avais dit sur la majorité de fichiers ou ça marchait bien )
Dernière modification par bobilesinge (Le 20/10/2018, à 17:16)
Hors ligne
#23 Le 20/10/2018, à 17:27
- Postmortem
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Ah OK.
T'as une espace entre le nombre et le "-", c'est pas la même chose que le motif du premier message où tu n'avais pas mis l'espace.
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#24 Le 20/10/2018, à 17:48
- Postmortem
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
J'ai pas testé mais comme ça, ça devrait être bon.
J'ai mis "ITEM<espace>" en préfixe et pris en compte l'espace entre le numéro et le "-".
rep=/chemin/vers/fichier # mettre le chemin complet vers le répertoire de départ
prefixe="ITEM "
shopt -s globstar
for fic in "$rep"/**/"$prefixe"*.pdf
do
numero=${fic##*/"$prefixe"}
numero=${numero%% -*}
suffixe=${fic##*/"$prefixe$numero"}
rep_fic=${fic%/*}
printf -v nouveau_nom '%s/%s%03d%s' "$rep_fic" "$prefixe" "$numero" "$suffixe"
echo mv -i "$fic" "$nouveau_nom" # enlever le « echo » si les lignes renvoyées te conviennent
done
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#25 Le 20/10/2018, à 23:42
- cristobal78
Re : [Résolu] Renommer fichiers : ajout de 0 devant les nb<100
Même si le pb est maintenant résolu je suis surpris que personne n'aie suggéré cet excellent logiciel :
gprename
"Complete batch renamer for Linux"
tout en graphique, en français et vraiment enfantin à mettre en œuvre !
Dernière modification par cristobal78 (Le 20/10/2018, à 23:43)
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne