Hallo!
Ich könnte Hilfe beim Verbessern eines Shell-Scriptes brauchen!
Auf dem Firmenserver liegen massenhaft JPGs in Auflösungen wie sie aktuelle Digitalkameras liefern. 99% der Fotos werden aber nur auf dem Bildschirm wiedergegeben. Also möchte ich diese JPGs besser komprimieren. Ich möchte es unter Linux machen, um mit "touch" der neu komprimierten Datei den Zeitstempel der Originaldatei zu verpassen.
Also habe ich mir zwei Scripte geschrieben:
Das erste Script finder.sh sucht mir die Dateien, der dann das zweite Script zum komprimieren und umbenennen aufruft.
finder.sh
#!/bin/bash
find . -name '*.jpg' -exec ./converter.sh {} ';'
find . -name '*.JPG' -exec ./converter.sh {} ';'
converter.sh
#!/bin/bash
FILE=$1
DEST=$1.compress
FILESIZE=$(stat -c %s $FILE)
echo Source: $FILE ' ' $FILESIZE
convert -quality 70 $FILE $DEST
DESTSIZE=$(stat -c %s $DEST)
DESTSIZEPLUS=$(expr $DESTSIZE + 100000)
echo Destin: $DEST $DESTSIZE
if test $DESTSIZEPLUS -le $FILESIZE ; then
echo "Uebernehme komprimierte Datei! "
touch $DEST -r $FILE
rm $FILE
mv $DEST $FILE
else
echo "Lasse bestehende Datei!"
rm $DEST
fi
Ablauf: Finder sucht nach JPGs/jpgs in allen Unterverzeichnissen und ruft je Datei converter.sh auf. Dieser komprimiert mit "convert" die JPGs mit der Qualitätstufe 70 (damit werden die meisten Dateien auf 1/4 bis 1/3 kleiner, die Bildauflösung will ich nicht ändern, da evtl. jemand die Dateien irgendwo in ein Dokument verknüpft hat), dann wird die Größe der beiden Dateien verglichen, und wenn die neu erzeugte Datei mindestens 100kb kleiner ist als die alte wird der Zeitstempel mit "touch" gesetzt, die Datei umbenannt und die Originaldatei gelöscht.
Was ich noch gerne hätte:
- Kann man diese zwei Scripte in ein Script umbauen?
- kann "find" JPG und jpg in einem aufruf finden.
und am aller wichtigsten.
- kann ich die if-Bedingung mit "and" erweitern, damit ich prüfen kann ob die neu erstellte Datei auch eine bestimmte Mindestgröße hat, nicht das aus irgendeinem Grund das komprimieren nicht geklappt hat und ich dann die Originaldatei lösche? (wobei natürlich alle gesichert sind!)
Danke schonmal für die Hilfe.
Bernhard