programmation shell ???????????

programmation shell ??????????? - Shell/Batch - Programmation

Marsh Posté le 27-07-2010 à 15:07:13    

Bonjour,  tt le monde ca va ??
 
en fait, j'ai un dossier qui contient plusieurs fichiers (fichier-1.tif, fichier-2.tif, fichier-3.tif, ..... etc)
 
je veux lancer une commande shell sous linux pour chaque fichier et les resultats est le nom du fichier mais l'extension est .png (fichier-1.tif ---> fichier-1.png)  
 
est ce que c'est possible de faire ça de façon automatique, car j'ai bcp des fichiers et c'est pas efficace de tapper le ligne de commande chaque fois ???? Merci pour votre aide c'est vraiment urgent  
 
 
Bonne après midi  
A+

Reply

Marsh Posté le 27-07-2010 à 15:07:13   

Reply

Marsh Posté le 27-07-2010 à 15:30:27    

Si c'est juste changer l'extension :

Code :
  1. for file in *.tif
  2. do
  3.   cp $file $(basename $file .tif).png
  4. done
 

Si tu dois lancer un script pour chaque fichier :

Code :
  1. ls *.tif | xargs -n1 -I{} ta_commande {}

Message cité 1 fois
Message édité par art_dupond le 27-07-2010 à 15:30:41

---------------
oui oui
Reply

Marsh Posté le 27-07-2010 à 15:37:08    

art_dupond a écrit :

Si c'est juste changer l'extension :

Code :
  1. for file in *.tif
  2. do
  3.   cp $file $(basename $file .tif).png
  4. done


 
Si tu dois lancer un script pour chaque fichier :

Code :
  1. ls *.tif | xargs -n1 -I{} ta_commande {}



 
ok merci bcp je test et je vous dis la réponse :)

Reply

Marsh Posté le 27-07-2010 à 15:53:06    

oups pitite erreur dans le premier script : il faut remplacer "cp" par "mv"
 
Là il copie tous les fichiers en .png
Si la commande a déjà été lancée il suffit d'effacer les fichiers .tif

Code :
  1. rm *.tif


 
Le code corrigé

Code :
  1. for file in *.tif
  2. do
  3.   mv $file $(basename $file .tif).png
  4. done


---------------
oui oui
Reply

Marsh Posté le 27-07-2010 à 15:57:40    

art_dupond a écrit :

oups pitite erreur dans le premier script : il faut remplacer "cp" par "mv"
 
Là il copie tous les fichiers en .png
Si la commande a déjà été lancée il suffit d'effacer les fichiers .tif

Code :
  1. rm *.tif


 
Le code corrigé

Code :
  1. for file in *.tif
  2. do
  3.   mv $file $(basename $file .tif).png
  4. done



 
en fait moi je veux lance une ligne de commande fait appel à un logicile qui prend en paramètre le fichier .tif et il me donne comme resultat une fichier .png
 
donc si jai bien compris  
je mets le code suivant :  
 
   1. for file in *.tif
   2. do
   3.   ls *.tif | xargs -n1 -I{} ligne_de_commande {}
   4. done


Message édité par atout1 le 27-07-2010 à 15:59:17
Reply

Marsh Posté le 27-07-2010 à 16:04:43    

non il faut juste mettre
 

Code :
  1. ls *.tif | xargs -n1 -I{} ligne_de_commande {}


 
 
ls *.tif   va lister les fichiers .tif et les donner à la suite qui va exécuter "ligne_de_commande fichier" pour chaque fichier
 
 
ou avec le for tu peux faire
 

Code :
  1. for file in *.tif
  2. do
  3.   ligne_de_commande $file
  4. done

Message cité 1 fois
Message édité par art_dupond le 27-07-2010 à 16:06:18

---------------
oui oui
Reply

Marsh Posté le 27-07-2010 à 16:05:38    

art_dupond a écrit :

non il faut juste mettre
 

Code :
  1. ls *.tif | xargs -n1 -I{} ligne_de_commande {}


 
 
ls *.tif   va lister les fichiers .tif et les donner à la suite qui va exécuter "ligne_de_commande fichier" pour chaque fichier


 
ok merci

Reply

Marsh Posté le 27-07-2010 à 16:21:43    

Utilise la commande rename qui permet le renommage de fichier en masse.
Si tu veux convertir un fichier du format TIF au format PNG, utilise l'outils convert du package ImageMagick.

 

atout1 : un seul '?' n'était pas suffisant dans ton titre pour indiquer une question ?


Message édité par sbuck le 27-07-2010 à 16:24:58
Reply

Marsh Posté le 27-07-2010 à 17:00:06    


 
 
merci beaucoup ça marche :)

Reply

Marsh Posté le 27-07-2010 à 17:02:15    

Merci bcp art_dupond ça marche
 
Merci aussi pour sbuck pour les infos ils sont utile pour moi  
mais j'ai pas compris, le pb de plusieurs ??? :D LOL

Reply

Sujets relatifs:

Leave a Replay

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