Renommer plusieurs fichiers en meme temps

Résolu/Fermé
artagon7
Messages postés
373
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
31 mars 2021
- 9 mai 2007 à 22:29
 unpassant - 9 sept. 2011 à 21:32
Bonjour,

Je voudrais savoir si il est possible dans les deux differents cas suivants de changer les noms de plusieurs fichiers au moyen d'UN SEUL script ou d'UNE SEULE commande.

Cas A

Dans le repertoire X, j'ai, par exemple, 100 fichiers suivants :

avril_mesures_001
avril_mesures_002
.. .. .. ..
avril_mesures_100


Comment changer les noms d'un seul coup par

avril_calculs_001
avril_calculs_002
.. .. .. ..
avril_calculs_100


au moyen d'un seul script?


Cas B

Dans le repertoire Y, j'ai les trois fichiers suivants :

orange.rtf
peche.rtf
pomme.rtf


Est-ce qu'il est possible que je puisse les renommer respectivement par :

fruit_001.rtf {orange.rtf}
fruit_002.rtf {peche.rtf}
fruit_003.rtf {pomme.rtf}


au moyen d'un seul script?

Merci

9 réponses

asevere
Messages postés
13089
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
421
9 mai 2007 à 22:58
Bonsoir,

Cas A, c'est possible bien sur.

Soit en une seule commande, rename si elle est disponible sur ton système.
$ rename mesures calculs avril_mesures_*
Ou part un simple script sinon:
#!/bin/bash
for file in *_mesures_*; do
mv $file ${file/mesures/calculs}
done
Voir le manuel de bash (man bash) pour les information sur la substitution, d'autre outils existent (sed, awk, etc.) pour faire quelque chose de similaire, mais ce script fonctionnera pour peu que /bin/bash soit présent. :)

Pour le cas B en revanche, je ne voit pas trop ou tu souhaite arriver.
Si 001 -> orange, 002 ->pêche, 003 -> pomme et si la liste n'est pas trop longue, il te faudrait un fichier de correspondance...

exemple:
$ cat correspondace.lst rename_fruits.sh 
001:orange
002:peche
003:pomme

$ cat rename_fruits.sh
#!/bin/bash
for file in fruit*; do
ref=$(echo $file | sed -r 's/fruit_([0-9]{3}).rtf/\1/')
mv $file $(grep $ref correspondace.lst |cut -f2 -d':').rtf
done

Voir man sed, man cut

Cordialement



15
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 565
9 mai 2007 à 23:05
Salut asevere,

en 2006 j'ai donné une solution avec rename renomer liste fichier linux mais il y a des gens qui font allergie à Perl :-DDD
0
asevere
Messages postés
13089
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
421 > lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019

9 mai 2007 à 23:08
Salut Lami,

Je me suis fais avoir aussi une fois, mais c'était pas perl c'était la non exsitance de cette commande sur tout les os linux/unix/bsd/* donc maintenant, je précise :)

@+
0
Merci, j'avais besoin du cas A et ca mù'a bien facilité la tâche. Merci !
0