linux-shellskript zur thumbnailserzeugung mit imagemagick
jobo
- programmiertechnik
Hallo,
in einem Ordner lungern in Originalgröße jgps. Die sollen in zwei Größen konvertiert werden. Mit Windows habe ich da schon mal ein Skript mit Hilfe von Vinzenz zusammengeschustert.
Allein die Konvertierung würde sich ja im Netz noch an Beispielen finden lassen. Ich möchte aber per cron-Job (evtl. unter der Nutzung von "nice" - und auch "daemon"??) in regelmäßigen Abständen schauen, ob in dem Ordner neue Fotos sind, von denen nicht schon ein thumb (in einem anderen Ordner wohl am Besten) erstellt wurde.
Mit php würde ich wohl foreach(scandir()) { } mit if(!file_exists()) benutzen. Unter WinXP heißt das for %%i in *.jpg ....
Frage eins: wie durchlaufe ich mit Linux die Dateien eines Verzeichnisses.
Frage zwei: gibt es eine bessere Lösung, als mit ls und grep zu schauen, ob die aktuelle abgefragte Datei schon als thumb-<Dateiname>.jpg in einem anderen Verzeichnis (../thumbs/) existiert?
Dank und Gruß
jobo
Hallo,
in einem Ordner lungern in Originalgröße jgps. Die sollen in zwei Größen konvertiert werden.
Allein die Konvertierung würde sich ja im Netz noch an Beispielen finden lassen. Ich möchte aber per cron-Job (evtl. unter der Nutzung von "nice" - und auch "daemon"??) in regelmäßigen Abständen schauen, ob in dem Ordner neue Fotos sind, von denen nicht schon ein thumb (in einem anderen Ordner wohl am Besten) erstellt wurde.
Du könntest Inotify verwenden, wenn möglich.
Freundliche Grüße
Vinzenz
Hallo,
Du könntest Inotify verwenden, wenn möglich.
Weiß nicht, ob ein Webpack-Pro von Hosteurope das hergibt. Das Skript in dem Thread schaut wohl einfach in bestimmten Zeitabständen, ob in dem Verzeichnis eine neue Datei angelangt ist, und wenn ja, kann man dann "was" machen. Da geht man dann davon aus, dass wenn es keine neue gibt, nix zu machen ist, weil es schon gemacht wurde (convert thumbnail) und wenn es eine neue gibt, eben das zu tun wäre (convert thumbnail). das würde man dann starten, wenn man absehen kann, das in dem verzeichnis sich bald was tun wird und den prozess dann stoppen (via killall oder was auch immer) wenn man weiß, dass sich nichts mehr in dem verzeichnis tun wird, oder?
Gruß
jobo
Hi,
Frage eins: wie durchlaufe ich mit Linux die Dateien eines Verzeichnisses.
Ich habe hier ein kleines ksh-Script, mit dem ich Bilder umbenenne:
for i in *.jpg
do
ctr=$((ctr+1));
name="PRAEFIX$ctr.jpg";
mv $i $name;
done
Damit wird ein Verzeichnis Durchlaufen und die Bilder werden umbenannt.
Frage zwei: gibt es eine bessere Lösung, als mit ls und grep zu schauen, ob die aktuelle abgefragte Datei schon als thumb-<Dateiname>.jpg in einem anderen Verzeichnis (../thumbs/) existiert?
if [ -e name.jpg ]
then
echo "Datei existiert"
else
echo "Datei existiert nicht"
fi
Hier eine Datei-Tests, die du statt "-e" verwenden kannst. Aber in deinem Beispiel sollte das -e eigentlich schon passen.
mfG,
steckl
Hallo,
so schaut das Ding jetzt aus:
cd bilder
for i in *.jpg
do
if [ -e ../thumbs/thumb-$i ]
then
echo "Datei $i existiert als thumb"
else
echo "Datei existiert nicht als thumb"
convert -thumbnail 200 $i ../thumbs/thumb-$i
echo "gethumbed von bilder/$i nach /thumbs/thumb$i"
fi
done
Gruß
jobo
Hallo,
Bilder könnten ja auch *.JPG heißen.
wie krieg ich denn for i in *.jpg|*.JPG hin?
^
soll ein "oder" werden
Gruß
jobo
Tach,
Bilder könnten ja auch *.JPG heißen.
oder JPEG oder Jpg ...
wie krieg ich denn for i in *.jpg|*.JPG hin?
ich schätze mal mit find wirst du mehr Erfolg haben als mit Arrays in der Bash.
mfg
Woodfighter