Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/04/2019, à 05:18

soupaloignon

[Réglé] Renomer des fichiers en utilisant des parties du nom original

Bonjour le forum,

Je dois faire des travaux sur des fichiers à l'aide de grep, mais dans un premier temps je souhaiterai classer ces fichiers (il y en a 250 environ) par ordre chronologique.
Pour le moment ils sont sous la forme : app100319.txt
Sous cette forme les 2 premiers chiffres (10) correspondent au jour, les 2 suivants (03) au mois, et les 2 derniers (19) à l'année.

J'aimerai pourvoir transformer ces noms de fichiers sous la forme appAnnéeMoisJour.txt pour obtenir un classement naturel chronologique. De cette manière les résultats du traitement avec grep seront eux aussi classé dans l'ordre chronologique.

La forme finale serait donc : app190310.txt


Par contre je ne vois pas du tout comment procéder pour y arriver, donc si vous avez des pistes, des bouts de solutions, je suis preneur wink

Dernière modification par soupaloignon (Le 18/04/2019, à 19:02)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 18/04/2019, à 07:11

pingouinux

Re : [Réglé] Renomer des fichiers en utilisant des parties du nom original

Bonjour,
Essaye ceci, qui fait juste une simulation :

rename -n 's/(.*)(\d{2})(\d{2})(\d{2})\./$1$4$3$2./' *.txt

Si c'est bon, tu enlèves -n pour renommer réellement les fichiers.

rename 's/(.*)(\d{2})(\d{2})(\d{2})\./$1$4$3$2./' *.txt

Hors ligne

#3 Le 18/04/2019, à 07:21

soupaloignon

Re : [Réglé] Renomer des fichiers en utilisant des parties du nom original

Hello,

Merci pour ton aide Pingouinux, je teste ça dans la matinée (je n'ai pas ces fichiers app avec moi là) et je te fais un retour. Mais bon, connaissant ta grande maîtrise de la console, je n'ai pas vraiment de doute quand au résultat smile


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#4 Le 18/04/2019, à 07:30

MicP

Re : [Réglé] Renomer des fichiers en utilisant des parties du nom original

Bonjour

On peut aussi le faire
en n'utilisant que l'interpréteur de commandes bash :

michel@debg53sw:~$ ls 
app070319.txt  app080319.txt  app090319.txt  app100319.txt  app110319.txt
michel@debg53sw:~$ 
michel@debg53sw:~$ maReg='(.*)([0-9]{2})([0-9]{2})([0-9]{2})(.*)'
michel@debg53sw:~$ for nomFich in app*.txt; do [[ $nomFich =~ $maReg ]] && mv "$nomFich" "${BASH_REMATCH[1]}${BASH_REMATCH[4]}${BASH_REMATCH[3]}${BASH_REMATCH[2]}${BASH_REMATCH[5]}"; done
michel@debg53sw:~$ 
michel@debg53sw:~$ ls 
app190307.txt  app190308.txt  app190309.txt  app190310.txt  app190311.txt

Mais bon, c'est plus long à écrire qu'avec la méthode de pingouinux qui utilise la commande rename

Dernière modification par MicP (Le 18/04/2019, à 07:37)

Hors ligne

#5 Le 18/04/2019, à 19:01

soupaloignon

Re : [Réglé] Renomer des fichiers en utilisant des parties du nom original

Bonjour le forum,

Je n'ai pas pu écrire un retour dans la journée comme je le pensais, because j'étais à mon boulot et je n'avais pas mes identifiants de connexion ...
Retour maison (après un petit apéro quand même) et j'arrive.

Pingouinux une fois de plus respect, ta commande marche super bien et en plus comme elle est simple, mais efficace, je pense même l'avoir compris.

>> MicP
Respect, impressionnant ta commande. Mais comme tu le disais toi même, c'est largement plus long à écrire que la ligne avec rename. Mais par contre cela montre la puissance de bash.

Merci à tous les 2 pour vos messages, je passe le sujet en résolu


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne