script rekursiv ausführen

B

benze

Grünschnabel
Hallo,
ich habe leider wenig Ahnung vom Programmieren auf der bash. Mit Hilfe dieses Forums und anderer Schnipsel habe ich mir ein Script zusammengebaut, das die in einem Verzeichnis enthaltenen Bilder verkleinert und mit einem Wasserzeichen versieht.
Da ich aber oft mehrere Verzeichnisse habe, in denen Bilder liegen und ich nicht in jedes Verzeichnis das Script kopieren und aufrufen möchte, suche ich nach einer Möglichkeit, so dass das Script aus einem übergeordneten Verzeichnis aufgerufen werden kann und in jedem Verzeichnis die Konvertierung/Wasserzeichen Benennung vornimmt.

Kann mir jemand helfen oder vielleicht einen Tipp geben, wo ich weitere Hinweise finden kann ???

Vielen Dank für Eure Hilfe und Hinweise.

--------------------------------------------
#! /bin/bash
# Wasserzeichen erzeugen
convert -size 400x40 xc:grey30 -font Arial -pointsize 20 -gravity center -draw "fill grey70 text 0,0 'Copyright Christian Benze'" stamp_fgnd.png
convert -size 400x40 xc:black -font Arial -pointsize 20 -gravity center -draw "fill white text 1,1 'Copyright Christian Benze' text 0,0 'Copyright Christian Benze' fill black text -1,-1 'Copyright'" +matte stamp_mask.png
composite -compose CopyOpacity stamp_mask.png stamp_fgnd.png stamp.png
mogrify -trim +repage stamp.png

#Liste der zu bearbeitenden Dateien erstellen
ls *.jpg >liste
bild=""
while read x
do
bild="$x"
echo $bild
identify -format "%w" $bild >breite
{
read line1
} <breite
#Bildpixel Quer- oder Hochformat
test=2850
if [ $line1 -lt $test ]
then
#echo Hochformat
convert -resize 426x640! -density 72 -quality 50 $bild $bild
#convert -pointsize 20 -gravity SouthEast -fill orange -draw "text 30,10 '(c) Christian Benze'" -fill orange -draw "text 20,-18 ''" $bild $bild

#Wasserzeichen einfuegen
composite -watermark 99% -gravity north stamp.png $bild $bild
composite -watermark 99% -gravity center stamp.png $bild $bild
composite -watermark 99% -gravity south stamp.png $bild $bild

#mv $bild /home/software/www.bilder.hoch
else
#echo Querformat
convert -resize 640x426! -density 72 -quality 50 $bild $bild

#convert -pointsize 20 -gravity SouthEast -fill orange -draw "text 30,10 '(c) Christian Benze'" -fill orange -draw "text 20,-18 ''" $bild $bild

#Wasserzeichen einfuegen
composite -watermark 99% -gravity north stamp.png $bild $bild
composite -watermark 99% -gravity center stamp.png $bild $bild
composite -watermark 99% -gravity south stamp.png $bild $bild
#mv $bild /home/software/www.bilder.quer
fi
done < liste
rm liste
rm breite
rm stamp.png
rm stamp_mask.png
rm stamp_fgnd.png
echo Fertig ...
 
Zuletzt bearbeitet:
Sorry, aber damit kann ich leider nichts anfangen. Geht das vielleicht ein bißchen genauer bitte ???
 
Hallo

Schau dir mal man find an, und sieh dich ein wenig im Board dazu um.
Es gibt zu find viele Varianten, die hier gepostet wurden.
Tipp
Du musst in deinem (von dir zusammengebastelten)?? Script einfach ls durch
find /pfad/ -name *jpg ersetzen.

Gruß Wolfgang
 
Klar:

Code:
find /pfad -type f -iname "*.jpg" -print0 | xargs -0 -n1 Wasserzeichen.sh

Dein Wasserzeichenskript schreibst Du so, dass es die Variable $bild vom Paramer $1 übernimmt. find findet rekursiv in einem gewünschten Pfad gewünschte Files und in Verbindung mit xargs wird dann Dein Wasserzeichen-Shellskript aufgerufen. Mehr dazu in man find und man xargs.

Gruss, Xanti

edit: Wolfgang war schneller.
 
Zurück
Oben