Renommer un lot de fichiers

Résolu/Fermé
zeunixnewbie - 6 oct. 2008 à 10:01
 zeunixnewbie - 6 oct. 2008 à 13:35
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 !

5 réponses

zeunixnewbie
6 oct. 2008 à 12:00
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 ?
0
zeunixnewbie
6 oct. 2008 à 13:35
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 ;-)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
6 oct. 2008 à 10:52
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 :-))
-1
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
6 oct. 2008 à 11:29
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
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
6 oct. 2008 à 12:11
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
-1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
6 oct. 2008 à 12:38
Pas mieux ;-))

Merci ;-)
-1
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
6 oct. 2008 à 13:13
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
-1