Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications
Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... )
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 28/09/2008, 14h52   #1
Invité de passage
 
Inscription : septembre 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 13
Points : 0
Points : 0
Par défaut Copier et renommer un fichier de plusieurs repertoires differents

Dear all,

mes données se trouvent en fait dans des repertoires du type:

Re.0000000\data.y
Re.0000100\data.y
Re.0000200\data.y
Re.0000300\data.y
...
...
Re.0035000\data.y

Il me faut les traduire de la facon suivante pour le faire tourner par un autre programme.

cp -i Re.0000000\data.y NEWFILE\data1
cp -i Re.0000100\data.y NEWFILE\data2
cp -i Re.0000200\data.y NEWFILE\data3
.....
cp -i Re.0035000\data.y NEWFILE\data351

Soit, 351 fois pour data.y ; data.x et data.z et il y'a d'autre types de data.

Quelqu'un(e) pourra t'il (elle) m'aider avec un boucle ( avec awk ou tout autre en linux) pour contourner cette difficulté?
Merci davance
Jessica
Jessy2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 10h31   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 502
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 502
Points : 9 685
Points : 9 685
Bonjour,

Pour compter à ta place une séquence comme cela, il y a seq. Dans ton cas, on va écrire seq -f %03g 0 350 :
-f %03g : format de l'affichage avec 3 chiffres, à compléter par des 0 si nécessaire


Ensuite, il n'y a plus qu'à construire la boucle :

Code :
1
2
3
4
for i in `seq -f %03g 0 350`
do
cp -i Re.00$i00/data.y NEWFILE/data$(($i + 1))
done
Il est bien évidenet qu'il est très fortement conseillé de tester ce code sur des fichiers d'exemple, avec un nombre restreint mais significatif de fichiers (11 par exemple)
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 17h02   #3
Invité de passage
 
Inscription : septembre 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 13
Points : 0
Points : 0
Par défaut Copier et renommer un fichier de plusieurs repertoires differents

Je te remercie bcp pour ta reponse,
J'ai essayé de modifier comme suit
#!/bin/bash
for i in $(seq 0 11)
do
cp -i Re.000$(($i))000/data.y NEWFILE/data$(($i + 1))
done

et cela marche a merveille jusqu'a l'iteration 9.
je comprends que pour i=10, il ne trouve plus le folder.
Mais c,est pas bien grave car je peux encore le tourner de 10 a 99.
c deja bcp de gain de temps.
Sauf avis contraire (Si une personne a autre choses a proposer), je pense que ca marche

Jessica
Jessy2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2008, 15h24   #4
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 502
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 502
Points : 9 685
Points : 9 685
Bonjour,

Pourquoi ne pas utiliser les propriétés de formatage proposées par seq, et vouloir le faire à la main ????

Si c'est parce que tu as des problèmes d'interprétation par le shell, il suffit de bisouiller un peu, et on trouve :

Code :
1
2
3
4
5
 
for i in `seq -f%03g 0 350`
do 
  echo "RE00$i""00/data.y NEWFILE/data""$i" 
done
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil 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 06h36.


 
 
 
 
Partenaires

Hébergement Web