Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2007, 21h37   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 1
Points : 0
Points : 0
Par défaut renommer une liste de fichiers

bonjour

j'ai un scripts qui me pose probléme.
il a 2 opérations a faire en mêmes temps.

-1 je voudrais renomer plus d'une 100éne de fichiers
en ajoutant un compteur.

toto.bis.123-01
toto.bis.178-08
toto.bis.789-05
......

en
0001.toto.bis
0002.toto.bis
0003.toto.bis
......

-2 creer un fichier vide avec le mêmes numero d'incrémentation mais avec la fin du nom du fichier

0001.bis.123-01
0002.bis.178-08
0003.bis.789-05
.......

A+
enco
joenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 22h19   #2
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Je n'ai pas d'unix sous la main (à cette heure ci )
Mais vous pouvez , déja , vous inspirer du code ci-dessous
PS :la syntaxe n'est pas garantie (Saint Axe Error Priez pour Nous )

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/ksh
 
num=0
#=================================
# Pour l'ensemble des fichiers de type toto.bis.*
for i in  toto.bis.*
do
     # num = num + 1 (cadré avec des 0 à gauche sur 4 caractère)
     num=`expr $num + 1 | awk ' { printf("%04d", $0) } '`
     # on renome le fichier
     mv $i ${num}.toto.bis
     # on créé un fichier vide
     touch $num.$i
done
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 15h57   #3
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
Oui mais aujourd'hii :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
#!/bin/sh
 
num=0
#=================================
# Pour l'ensemble des fichiers de type toto.bis.*
for i in  toto.bis.*
do
     # num = num + 1 (cadré avec des 0 à gauche sur 4 caractère)
     (( num = num + 1 ))
     printf "%04d\n" ${num}
     # on renomme le fichier
     mv $i ${num}.toto.bis
     # on créé un fichier vide
     > $num.$i
done
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 18h32   #4
Membre Expert
 
Avatar de jeanbi
 
Inscription : avril 2003
Messages : 1 645
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 1 645
Points : 1 846
Points : 1 846
bonjour,
en graphique il y a Métamorphose qui n'est pas mal non plus et qui peut dépanner
http://www.framasoft.net/article4371.html
a+
jeanbi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2007, 15h44   #5
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
Personnellement, je n'ai jamais trouvé plus puissant que zsh pour faire du renommage de fichier.

Pour le renommage demandé, on peut faire une boucle for :
Code :
c=1; for i (toto.*) mv $i ${(l:4::0:)$((c++))}.$i:r
Ou utiliser zmv (intégré dans zsh) :
Code :
c=1 zmv 'toto.*' '${(l:4::0:)$((c++))}.toto.bis'
Pour faire l'ensemble des opérations demandées (renommage + création), ça tient en une ligne (même pas besoin de créer un fichier exprès pour) :
Code :
c=1; for i (toto.*) {mv $i ${(l:4::0:)c}.$i:r; touch ${(l:4::0:)$((c++))}.bis.$i:e}
Pour la plupart des renommages courants, c'est très simple à utiliser.
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h54.


 
 
 
 
Partenaires

Hébergement Web