copier tous les fichiers d'un repertoire

copier tous les fichiers d'un repertoire - Shell/Batch - Programmation

Marsh Posté le 05-02-2008 à 11:06:41    

Bonjour,
 
Je vous explique mon probléme, je voudrais grâce à un programme en shell ouvrir tous les fichiers d'un repertoire et les copiers 1 par 1 dans un fichier d'un nom différent.
Par exemple avoir comme fichiers dans le repertoire:
 
simu_20GHz.ri copié dans resultat20GHz.txt
simu_19GHz.ri copié dans resultat19GHz.txt
.....
 
pourriez vous m'aider car je ne vois pas comment faire?
Merci d'avance

Reply

Marsh Posté le 05-02-2008 à 11:06:41   

Reply

Marsh Posté le 05-02-2008 à 11:09:57    

T'as décidé d'abandonner l'idée de le faire en C ? [:el g]

 

En ksh ou en bash :

for i in /chemin/de/ton/repertoire/*
do
   cp $i <nouveau nom>
done

 

edit : par contre ton problème n'est pas clair, je me suis donc arrêté à la phrase "ouvrir tous les fichiers d'un repertoire et les copiers 1 par 1 dans un fichier d'un nom différent."


Message édité par Elmoricq le 05-02-2008 à 11:10:56
Reply

Marsh Posté le 05-02-2008 à 11:21:11    

rebonjour,
 
ouais à priori on nous a dit de le faire en bash!
(Le probléme c'est que nous on fait de la télécom et pas du tout d'info mais on en a besoin pour récupérer des données donc on perd un temps fou à des trucs qui nous interessent pas!)
 
le programme que tu m'as donné ne va pas tout copier dans un même fichier?

Reply

Marsh Posté le 05-02-2008 à 11:32:29    

Si "<nouveau nom>" est toujours identique, ça écrasera à chaque fois ce nouveau fichier pour chaque $i, et à la fin il ne sera égal qu'au dernier fichier recopié.
Il faut donc définir un nouveau nom de fichier pour chaque fichier à recopier, mais sans plus de précision de ta part il est difficile de t'aider davantage.

Reply

Marsh Posté le 05-02-2008 à 11:43:19    

je te donne un exemple:
j'ai 1000 fichiers dans le repertoire et je veux tous les copiers. Chaque fichier aura un "back up", mais il faut également que je sache quel fichier est le back up de l'original donc je dois donner au nom du backup une signification particuliere
 
par exemple si j'ai simu_20GHz.txt je voudrais copier en resultat_20GHz.txt
idem             pour simu_19GHz.txt que je voudrais copier dans resultat_19GHz.txt
etc.....
 
j'espere que j'ai été plus clair!

Reply

Marsh Posté le 05-02-2008 à 11:45:43    

Bah remplace "simu" par "resultat" dans la recopie alors :

for i in /chemin/de/ton/repertoire/simu_*
do
   j=$(basename $i | sed 's/^simu/resultat/')
   cp $i /repertoire/de/destination/$j
done

Reply

Marsh Posté le 05-02-2008 à 12:04:57    

Merci beaucoup!
ça marche!
maintenant j'ai une derniére question!  
Est ce que dans le programme shell je peux lui dire d'appliquer un programme en C (et ouais revoila le C). J'essaie d'être plus clair!
j'ai un programme en C qui extrait des données des fichiers originaux et je voudrais copier ces résultats dans les fichiers resultat (comme je t'ai montré au message précédent les données extraites de chaque fichier serait dans des fichiers resultat par exemple j'extrait les données de simu_20GHz.txt et je les copie dans resultat_20GHz)
comment faire pour que le programme bash applique à chaque fichier simu_ mon programme C puis mette le résultat dans le fichier resultat_  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed