Renommer extension linux

Fermé
lucien_dg Messages postés 4 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 29 septembre 2005 - 14 sept. 2005 à 16:35
 vic - 4 juil. 2013 à 20:24
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 samedi 26 février 2005 Statut Contributeur Dernière intervention 19 juillet 2009 295
14 sept. 2005 à 16:58
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
Encore plus rapide :
rename 's/ext1$/ext1/' *.ext1

voir man rename !
2
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 198 Date d'inscription lundi 29 janvier 2007 Statut Membre Dernière intervention 10 février 2010 181
1 févr. 2009 à 18:37
Salut,

find repertoire -name "*.ext1" -exec rename .ext1 .ext2 {} \;
1
lucien_dg Messages postés 4 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 29 septembre 2005
15 sept. 2005 à 08:36
Merçi bien
0

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

Posez votre question
Concombre Masqué
30 janv. 2009 à 16:18
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
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 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
28 déc. 2009 à 09:00
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