Renommer un lot de fichiers
Résolu
zeunixnewbie
-
zeunixnewbie -
zeunixnewbie -
Bonjour,
Je dois renommer un grand nombre de fichiers dont le nom est de la forme:
toto_20080816.titi
en
200808_toto.titi
Je pensais utiliser du sed mais je sèche lamentablement sur la méthode.
Un point essentiel: étant sous AIX 5, je n'ai pas d'option -s dispo avec sed...
Si l'un de vous a une idée, je suis preneur.
Merci d'avance !
Je dois renommer un grand nombre de fichiers dont le nom est de la forme:
toto_20080816.titi
en
200808_toto.titi
Je pensais utiliser du sed mais je sèche lamentablement sur la méthode.
Un point essentiel: étant sous AIX 5, je n'ai pas d'option -s dispo avec sed...
Si l'un de vous a une idée, je suis preneur.
Merci d'avance !
A voir également:
- Renommer un lot de fichiers
- Renommer des fichiers en masse - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment faire un lot sur vinted - Guide
- Comment ouvrir un fichier bin ? - Guide
5 réponses
Clap clap.
Z'êtes forts !
Bravo pour le sed. Il va falloir que je me penche bien dessus pour comprendre tous les caractères de substitution.
Un point de détail tout de même, je ne souhaite récupérer que les 6 premiers caractères de la date.
toto_20080816.titi
en
200808_toto.titi
Une idée ?
Z'êtes forts !
Bravo pour le sed. Il va falloir que je me penche bien dessus pour comprendre tous les caractères de substitution.
Un point de détail tout de même, je ne souhaite récupérer que les 6 premiers caractères de la date.
toto_20080816.titi
en
200808_toto.titi
Une idée ?
Snif snif...
Je pleure tellement c'est beau !
Bon, sinon, sans rire, merci pour le lien, c'est exactement ce que je cherchais et merci pour la commande: ça marche nickel.
Promis, ma prochaine question sera postée avec mon nouveau pseudo: zeunixmaster ;-)
Je pleure tellement c'est beau !
Bon, sinon, sans rire, merci pour le lien, c'est exactement ce que je cherchais et merci pour la commande: ça marche nickel.
Promis, ma prochaine question sera postée avec mon nouveau pseudo: zeunixmaster ;-)
Salut,
jp@MDK:~/tmpfs ssh$ ls -1 *.txt tata_20080816.txt tati_20080816.txt tato_20080816.txt tatu_20080816.txt tita_20080816.txt titi_20080816.txt tito_20080816.txt titu_20080816.txt tota_20080816.txt toti_20080816.txt toto_20080816.txt totu_20080816.txt tuta_20080816.txt tuti_20080816.txt tuto_20080816.txt tutu_20080816.txt jp@MDK:~/tmpfs ssh$ for fich in *.txt;do echo "mv $fich $(sed 's/\(.*\)_\(.*\)\.\(.*\)/\2_\1.\3/' <<<$fich)";done mv tata_20080816.txt 20080816_tata.txt mv tati_20080816.txt 20080816_tati.txt mv tato_20080816.txt 20080816_tato.txt mv tatu_20080816.txt 20080816_tatu.txt mv tita_20080816.txt 20080816_tita.txt mv titi_20080816.txt 20080816_titi.txt mv tito_20080816.txt 20080816_tito.txt mv titu_20080816.txt 20080816_titu.txt mv tota_20080816.txt 20080816_tota.txt mv toti_20080816.txt 20080816_toti.txt mv toto_20080816.txt 20080816_toto.txt mv totu_20080816.txt 20080816_totu.txt mv tuta_20080816.txt 20080816_tuta.txt mv tuti_20080816.txt 20080816_tuti.txt mv tuto_20080816.txt 20080816_tuto.txt mv tutu_20080816.txt 20080816_tutu.txt jp@MDK:~/tmpfs ssh$Si ça marche, enlève juste le "echo" et les quotes doubles, et roulez jeunesse :-))
Salut Zeunixnewbie, Salut Jpicy,
En adaptant l'expression de Jipicy, on peut aussi faire çà
ls -1 *.txt | sed 's/\(.*\)_\(.*\)\.\(.*\)/mv \1_\2\.\3 \2_\1.\3/'
et rajouter un pipe vers sh si c'est ce qui est attendu :
ls -1 *.txt | sed 's/\(.*\)_\(.*\)\.\(.*\)/mv \1_\2\.\3 \2_\1.\3/' | sh
Dal
En adaptant l'expression de Jipicy, on peut aussi faire çà
ls -1 *.txt | sed 's/\(.*\)_\(.*\)\.\(.*\)/mv \1_\2\.\3 \2_\1.\3/'
et rajouter un pipe vers sh si c'est ce qui est attendu :
ls -1 *.txt | sed 's/\(.*\)_\(.*\)\.\(.*\)/mv \1_\2\.\3 \2_\1.\3/' | sh
Dal
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Essaye çà :
ls -1 *.txt | sed 's/\(.*\)_\(.\{6\}\)\(.*\)\.\(.*\)/mv \1_\2\3\.\4 \2_\1.\4/'
(c'est sur une seule ligne)
Et rajoute le pipe vers sh si celà te convient.
[idem pour la solution de Jipicy, tu intercales \(.\{6\}\) à la suite du underscore et le \3 devient \4 car il y a désormais 4 captures]
Dal
ls -1 *.txt | sed 's/\(.*\)_\(.\{6\}\)\(.*\)\.\(.*\)/mv \1_\2\3\.\4 \2_\1.\4/'
(c'est sur une seule ligne)
Et rajoute le pipe vers sh si celà te convient.
[idem pour la solution de Jipicy, tu intercales \(.\{6\}\) à la suite du underscore et le \3 devient \4 car il y a désormais 4 captures]
Dal
Salut Jipicy,
Pour çà aussi, moi je dis .. "pas mieux" : http://www.commentcamarche.net/faq/sujet 9536 sed introduction a sed part i
çà aidera notre ami zeunixnewbie à comprendre .. en particulier ce passage :
http://www.commentcamarche.net/faq/sujet 9559 sed introduction a sed part ii#les sous expressions et references arrieres
Dal
Pour çà aussi, moi je dis .. "pas mieux" : http://www.commentcamarche.net/faq/sujet 9536 sed introduction a sed part i
çà aidera notre ami zeunixnewbie à comprendre .. en particulier ce passage :
http://www.commentcamarche.net/faq/sujet 9559 sed introduction a sed part ii#les sous expressions et references arrieres
Dal