script rekursiv ausführen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von benze, 15.09.2006.

  1. #1 benze, 15.09.2006
    Zuletzt bearbeitet: 21.06.2007
    benze

    benze Grünschnabel

    Dabei seit:
    15.09.2006
    Beiträge:
    4
    Zustimmungen:
    0
    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 ...
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Für sowas gibt's find.

    Gruss, Xanti
     
  4. benze

    benze Grünschnabel

    Dabei seit:
    15.09.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Sorry, aber damit kann ich leider nichts anfangen. Geht das vielleicht ein bißchen genauer bitte ???
     
  5. #4 Wolfgang, 15.09.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    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
     
  6. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    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.
     
Thema:

script rekursiv ausführen

Die Seite wird geladen...

script rekursiv ausführen - Ähnliche Themen

  1. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  2. Bashscript aus Debian6 läuft nicht auf Debian7

    Bashscript aus Debian6 läuft nicht auf Debian7: Hallo an alle, nachdem ich ein Skript von squeeze auf wheezy kopiert habe und ausführte, erschienen gleich wilde Fehlermeldungen, nach denen ich...
  3. Shell Script Problem

    Shell Script Problem: Hallo zusammen, ich arbeite momentan mit einem Plagiat Tool, die ich über Git Bash ausführe. Es wird im Endeffekt ein Link generiert, die ich...
  4. Externes Programm mit Script ausführen?

    Externes Programm mit Script ausführen?: Hallo, ich würde gern ein Script zum klonen von festplatten schreiben z.B. mit dem Programm Mondo Rescue. Ist es möglich externen Programmen...
  5. sh Script zum Autostart

    sh Script zum Autostart: hallo liebe Mitglieder, wenn ich unter Linux eins meiner Shell Skripte im Autostart haben will nutze ich immer die @reboot Funktion im crontab....