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?
A voir également:

7 réponses

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
Pentaire rause
 
Encore plus rapide :
rename 's/ext1$/ext1/' *.ext1

voir man rename !
2
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
Herr Dr von Apfelstrudel Messages postés 199 Statut Membre 182
 
Salut,

find repertoire -name "*.ext1" -exec rename .ext1 .ext2 {} \;
1
lucien_dg Messages postés 4 Statut Membre
 
Merçi bien
0

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

Posez votre question
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
max
 
Super c'est ce que je cherchais
Faut que je bosse le shell, je perdrai moins de temps.
Merci pour la commande
0
jisisv Messages postés 3678 Statut Modérateur
 
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