Renommer extension linux

lucien_dg Messages postés 4 Statut Membre -  
 vic -
Bonjour,

Quelqu'un saurait comment renommer une serie de fichier d'extension .x en .y de tous les répertoires et sous reprtoires?

7 réponses

  1. Phiphi57 Messages postés 789 Date d'inscription   Statut Contributeur Dernière intervention   295
     
    c'est sans doute pas la méthode la plus élégante...

    en console :

    for i in `find . -name "*.x"`
    do
    cp $i ${i%.x}.y
    done
    

    attention aux ` qui sont différents de ' ou de " !!

    j'ai mis un "cp" au lieu de "mv" car je pense que c'est plus sur....
    ensuite
    for i in `find . -name "*.x"`
    do
    rm $i
    done
    

    si ca a fait ce que tu voulais

    Phiphi
    4
  2. Pentaire rause
     
    Encore plus rapide :
    rename 's/ext1$/ext1/' *.ext1

    voir man rename !
    2
    1. vic
       
      plutôt rename 's/ext1$/ext2/' *.ext1

      Ça marche super sinon, merci !

      Ah, et n'hésitez pas à utilisez les options -v -n pour voir ce que ça va faire. Parfois, ça rassure bien.

      Comme disait Pentaire rause, rien ne vaut les bonnes pages de manuel
      0
  3. Herr Dr von Apfelstrudel Messages postés 199 Statut Membre 182
     
    Salut,

    find repertoire -name "*.ext1" -exec rename .ext1 .ext2 {} \;
    1
  4. lucien_dg Messages postés 4 Statut Membre
     
    Merçi bien
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Concombre Masqué
     
    Bonjour, je voudrais faire la même chose, à une petite différence :

    j'ai toto.ext1, je veux toto.ext2

    Avec le bout de code proposé, j'ai toto.ext1.ext2

    Pouvez vous m'aider ?
    0
  7. max
     
    Super c'est ce que je cherchais
    Faut que je bosse le shell, je perdrai moins de temps.
    Merci pour la commande
    0
  8. jisisv Messages postés 3678 Statut Modérateur 936
     
    Des solutions sympas, mais pas performantrs, pourquoi ne pas utiliser un pipe avec xargs et rename ?

    johand@hathor:~/tmp$ for i in $(seq -f %03.0f 0 999); do echo $i > $i.ext1 ; done

    ohand@hathor:~/tmp$ time for file in $(find . -type f -name '*ext1') ; do rename 's/ext1$/ext2/' $file; done

    real 1m16.643s
    user 1m8.228s
    sys 0m8.501s
    johand@hathor:~/tmp$ time find . -type f -name '*ext2') |xargs rename 's/ext2$/ext1/' $file; done
    bash: syntax error near unexpected token `)'
    johand@hathor:~/tmp$ time find . -type f -name '*ext2' | xargs rename 's/ext2$/ext1/' $file

    real 0m0.551s
    user 0m0.344s
    sys 0m0.220s
    jjohand@hathor:~/tmp$ uname -a
    Linux hathor 2.6.31-16-generic #53-Ubuntu SMP Tue Dec 8 04:01:29 UTC 2009 i686 GNU/Linu

    On voit les différences en temps d'exécution.....
    -1