Renommer un lot de fichiers

Résolu
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 !

5 réponses

  1. zeunixnewbie
     
    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
  2. zeunixnewbie
     
    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
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  4. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Pas mieux ;-))

      Merci ;-)
      -1
      1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        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