Lori: ImageMagick convert Syntax >

Beitrag lesen

Hi.

Ich schreibe gerade ein Sh-Skript für Unix (spezieller Linux), das alle Bilder in allen Unterverzeichnissen des angegebenen Verzeichnisses verkleinern soll, wenn deren Breite 1024px übersteigt.

  
#!/bin/sh  
  
directory="/home/lori/webs/bilder_orig/*"  
  
#In $dir sind die Ordner aus bilder_orig  
#In $file sind die Bilder aus allen $dir  
  
for dir in $directory ;  
 do  
 #Existiert der Ordner "neu" in den Unterverzeichnissen schon?  
 if [ -d $dir'/neu' ]  
  then  
   #Wenn ja, dann Meldung ausgeben und nichts machen  
   echo Ordner $dir'/neu' existiert  
  else  
   #Wenn nicht, dann erstellen und Rechte setzen  
   mkdir $dir'/neu'  
   chmod 777 $dir'/neu'  
   dir2=$dir  
   dir=$dir'/*'  
    for file in $dir ;  
     do  
     #Jedes Bild, dessen Breite höher als 1024px ist, verkleinern  
     cd $dir2  
     filename=`basename $file`  
     #Wenn die zu bearbeitende Datei eine Datei ist, dann bearbeiten. Grund: Ordner "neu" wird nicht mitinbegriffen  
     if [ -f $file ]  
      then  
      #< und > scheinen bei dieser Version von imagemagick nicht zu funktionieren  
      convert -resize 1024> $filename 'neu/'$filename  
     fi  
     done  
 fi  
  
  
 done  

Das Skript gibt mir für jede Datei die Meldung

./makeimgsmall.sh: line 30: 1024: Ungültiger Dateideskriptor

aus.
Außerdem zerstört es die Originalbilder. Sicherungskopien hurra :D

Hat jemand vielleicht auch eine Idee wie ich das Skript schneller machen kann? Weil zwei for-Schleifen ineinander zu verschachteln ist nicht gerade vorteilhaft.

Wie lautet denn die richtige Syntax für convert, damit alle Bilder deren Breite größer als 1024px ist, zu verkleinern auf 1024px zu * ?

Version ImageMagick 6.2.3

Danke
Lori