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 09/10/2007, 13h53   #1
Membre du Club
 
Inscription : mai 2004
Messages : 199
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2004
Messages : 199
Points : 59
Points : 59
Par défaut copie de fichiers de plusieurs répertoires vers un seul

Bonjour,

Je voudrais copier des fichiers textes de plusieurs répertoires vers un seul.
Voici mon architecture :

répertoires sources des fichiers :
Code :
1
2
3
4
5
6
7
8
 
/infocentre/prod/cmb/data/inf/bin/prc/
/infocentre/prod/cmmc/data/inf/bin/prc/
/infocentre/prod/cmso/data/inf/bin/prc/
/infocentre/prod/bpe/data/inf/bin/prc/
/infocentre/prod/cma/data/inf/bin/prc/
/infocentre/prod/cmo/data/inf/bin/prc/
/infocentre/dev/gicm/data/inf/bin/prc/
répertoire cibles des copies de fichiers :
Code :
/infocentre/dev/gicm/data/inf/src/sap
Le script est lancé dans le répertoire précédent à infocentre.
Je n'arrive pas à aller dans chaque répertoire ne serait-ce que pour afficher les fichiers présents.
Pouvez-vous m'aider?

Voila le code que j'utilise pour afficher les fichiers présents :
Code :
1
2
3
4
5
6
 
for file in *.txt
do
Name=$(echo $file)
echo "$Name"
done
cell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 13h55   #2
Membre du Club
 
Avatar de java_fun
 
Inscription : novembre 2004
Messages : 117
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 117
Points : 66
Points : 66
Envoyer un message via MSN à java_fun


peut tu mettre ton script entre la balise code(#).

Cdlt
__________________
Java fun is back
java_fun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 15h28   #3
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 499
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 499
Points : 9 679
Points : 9 679
Bonjour,

Citation:
Envoyé par cell Voir le message
Code :
1
2
3
4
5
6
 
for file in *.txt
do
Name=$(echo $file)
echo "$Name"
done
L'instruction 'for' ne fais pas ce que tu crois, d'où le soucis : for XXX in YYY parcourt la liste des YYY.

Le mieux pour compndre est que tu exécutes le script suivant :
Code :
1
2
3
4
5
6
 
#!/bin/bash
for list in Bonjour comment vas tu
do
   echo "mot : " $list
done
Si tu souhiates lister des fichiers, il est possible que for créé la liste qu'il va parcourir, via des commandes shell :

Les guillemets ` servent alors à indiquer au shell qu'il faut interpréter cette commande pour avoir la liste :
Code :
1
2
3
4
5
6
 
#!/bin/bash
for list in `ls *.txt`
do
   echo "fichier : " $list
done
N'hésites pas à poser des questions is tu ne comprends pas.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 22h14   #4
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
En bash, cette syntaxe fonctionne

Code :
ls /infocentre/prod/{cmb,cmmc,cmso,bpe,cma,cmo,gicm}/data/inf/bin/prc/*txt
Si ça marche, tu fais :

Code :
cp /infocentre/prod/{cmb,cmmc,cmso,bpe,cma,cmo,gicm}/data/inf/bin/prc/*txt  /infocentre/dev/gicm/data/inf/src/sap
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 08h39   #5
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
Par défaut Avec find

Code :
1
2
3
4
 
cd /infocentre
 
find ./prod/cmb/data/inf/bin/prc/ ./prod/cmmc/data/inf/bin/prc/ ./prod/cmso/data/inf/bin/prc/ ./prod/bpe/data/inf/bin/prc/ ./prod/cma/data/inf/bin/prc/ ./prod/cmo/data/inf/bin/prc/ ./dev/gicm/data/inf/bin/prc/ -type f -name "*.txt" -exec cp {} ./dev/gicm/data/inf/src/sap/. \;

Si la liste des repertoires est exhaustive sur les possiblilites de type "data/inf/bin/prc/"
Ce qui suit fait la meme chose

Code :
1
2
3
 
cd /infocentre
find ./*/*/data/inf/bin/prc  -type f -name "*.txt" -exec cp {} ./dev/gicm/data/inf/src/sap/. \;
__________________
Signé : Capitaine Jean-Luc Picard
argoet 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 22h14.


 
 
 
 
Partenaires

Hébergement Web