[BASH] traiter des fichiers dans un boucle for

traiter des fichiers dans un boucle for [BASH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 13-11-2006 à 22:17:40    

Bonjour à tous,
 
voilà, je cherche à générer des miniatures de photos à l'aide d'un script (utilisant ImageMagick), mais il y a une couille dans le paté au niveau de la boucle for :), il ne traite le fichier que lorsque celui-ci ne contient pas d'espace dans son nom.
Exemple quand je l'execute dans un dossier qui contient "exemple image.jpg", j'obtiens le résultat suivant:
 

Code :
  1. convert: unable to open image `exemple': Aucun fichier ou répertoire de ce type.
  2. convert: unable to open image `image.jpg': Aucun fichier ou répertoire de ce type.


 
Voici mon script :  
 

Code :
  1. #!/bin/bash
  2. for file in *.jpg
  3. do
  4.         convert $file -thumbnail 110x150 miniatures/small_$file.jpg
  5. done


 
Quelqu'un aurait-il une idée ?


Message édité par microsoft le 13-11-2006 à 22:22:42

---------------
Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse"
Reply

Marsh Posté le 13-11-2006 à 22:17:40   

Reply

Marsh Posté le 13-11-2006 à 22:24:52    

"$file" :o :D

Reply

Marsh Posté le 14-11-2006 à 14:12:52    

voire même "${file}", pour faire bien propre :hello:

Reply

Marsh Posté le 14-11-2006 à 19:44:23    

merci à vous deux pour vos réponses, mais je ne réussi pas à utiliser ces deux variantes...
 
[hs] je débute en scripts et j'ai vraiment du mal avec la syntaxe, je ne sais jamais quand utiliser ' , " , [ , ou {, insérer un espace ou non, si vous avez un lien qui explique ça , je suis preneur  :jap: [/hs]
 
j'ai modifié le script comme suit :
 

Code :
  1. #!/bin/bash
  2. for "${file}" in *.jpg
  3. do
  4.         convert "${file}" -thumbnail 110x150 thumbnails/ "${file}"
  5. done


 
mais quand je l'exécute, ça me donne le message suivant:
 

Code :
  1. ./miniature: line 5: `"${file}"': not a valid identifier


 
d'ailleurs je comprends pas pourquoi il trouve une erreur sur la ligne 5... la ligne 4 je veux bien mais là  :??:  
merci


---------------
Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse"
Reply

Marsh Posté le 14-11-2006 à 23:33:42    

Pour débuter avec Bash, je te conseille ce guide : http://tldp.org/LDP/abs/html/
 
et sa traduction en français : http://abs.traduc.org/abs-4.1-fr/

Reply

Marsh Posté le 15-11-2006 à 10:44:53    


Code :
  1. #!/bin/bash
  2. for file in *.jpg # là tu veux assigner fichier1.jpg fichier2.jpg ... à ta variable file
  3. do
  4.         convert "${file}" -thumbnail 110x150 "thumbnails/${file}" # et là passer la valeur de ta variable à ta commande convert
  5. done


Reply

Marsh Posté le 16-11-2006 à 16:08:22    

Le Ouinhin Pervers a écrit :

Pour débuter avec Bash, je te conseille ce guide : http://tldp.org/LDP/abs/html/
 
et sa traduction en français : http://abs.traduc.org/abs-4.1-fr/


 
Merci monsieur ! je viens de commencer à le lire, c'est une vrai bible ce document , le bash n'aura "bientôt" plus de secrets pour moi ^^
 

DDT a écrit :

Code :
  1. #!/bin/bash
  2. for file in *.jpg # là tu veux assigner fichier1.jpg fichier2.jpg ... à ta variable file
  3. do
  4.         convert "${file}" -thumbnail 110x150 "thumbnails/${file}" # et là passer la valeur de ta variable à ta commande convert
  5. done



 
Merci beaucoup  :jap:  


---------------
Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse"
Reply

Sujets relatifs:

Leave a Replay

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