- Mitglied seit
- 14 Jan 2014
- Beiträge
- 10
- Punkte für Reaktionen
- 0
- Punkte
- 0
Hallo Forum,
in meinem ersten Beitrag habe ich von einer Skriptidee geschrieben, die ich mittlerweile fast umgesetzt habe (fast, weil aus meiner Sicht noch nicht perfekt ist).
Der Code sieht zur Zeit so aus: (Benutzung bitte nur mit Kopien von Fotos, ist noch BETA ;-)
Eigentlich funktioniert es so wie es soll:
Es werden Fotos vom Quellordner in den Zielordner verschoben und gemäß dem Exifdatum wird eine Ordnerstruktur angelegt falls nicht vorhanden. Das ist praktisch wenn man mal wieder ewig die Fotos von der Kamera nicht runtergeladen hat.
Leider wirft er mir nach Aufruf von folgende Fehlermeldungen aus:
Mein "Testszenario" sieht so aus:
5 Dateien im Quellordner, 3 Dateien *.JPG, 2 Dateien *.jpg (eine davon ohne Exifinfos)
Ich freue mich über jeden Tipp, denn ich weiß mittlerweile nicht mehr, [was ich] || [was ich noch nicht] ausprobiert habe. Zusätzlich bin ich auch für Tipps dankbar, die mir das Debuggen von Skripten oder die Fehlerbehandlung in den Skripten erleichtern. Viele Sachen, die sich im Internet finden, funktionieren unter Freetz nicht (z.B. http://www.pro-linux.de/artikel/2/111/ein-shellskript-template.html) weil dazu eine "bash-shell" erforderlich ist.
in meinem ersten Beitrag habe ich von einer Skriptidee geschrieben, die ich mittlerweile fast umgesetzt habe (fast, weil aus meiner Sicht noch nicht perfekt ist).
Der Code sieht zur Zeit so aus: (Benutzung bitte nur mit Kopien von Fotos, ist noch BETA ;-)
Code:
#!/bin/sh
###############################################################
# Variablen
##############################################################
#
# Variablen
#
QUELLORDNER=/pfad/zum/quellordner
ZIELORDNER=/pfad/zum/quellordner
PATH=/pfad/zum/ordner/jhead:$PATH
LOGDATEI=/pfad/zur/logdatei
#
ZAEHLER=0
ZOHNEHEAD=0
#
#
#######################################################################
# Ab hier geht es richtig los...
#######################################################################
#
echo "Logdaten Fotos_sortieren" > $LOGDATEI
#DATEIEN=$(ls $QUELLORDNER/*.jpg)" "$(ls $QUELLORDNER/*.JPG)
DATEIEN=`find $QUELLORDNER -iname "*.jpg" -print`
#
# Bearbeitung der Dateiliste
#
for DATEI in $DATEIEN ; do
DATEINAME=$(basename $DATEI)
DATUM=$(jhead $DATEI | grep Date/Time)
if [ ! $DATUM ] ; then
ZOHNEHEAD=$ZOHNEHEAD" + 1"
echo "kein Exifheader bei Datei : "$DATEI >> $LOGDATEI
else
ZAEHLER=$ZAEHLER" + 1"
# Zuweisen der Variablen jahr, monat und tag
JAHR=`jhead $DATEI | grep Date/Time | cut -c16-19`
MONAT=`jhead $DATEI | grep Date/Time | cut -c21-22`
TAG=`jhead $DATEI | grep Date/Time | cut -c24-25`
#
# Feststellen, ob es den Ordner $jahr im Zielordner bereits gibt, falls nicht, wird er angelegt
if [ ! -d $ZIELORDNER/$JAHR ]; then
mkdir $ZIELORDNER/$JAHR
fi
#
# Feststellen, ob es den Ordner $monat--$tag* im Zielordner/$jahr bereits gibt, falls nicht, wird er angelegt
if [ ! -e $ZIELORDNER/$JAHR/$MONAT--$TAG* ] && [ ! -d $ZIELORDNER/$JAHR/$MONAT--$TAG* ]; then
# Zielordner nicht vorhanden
mkdir $ZIELORDNER/$JAHR/$MONAT"--"$TAG
ZIELORDNERKOMPLETT="$ZIELORDNER/$JAHR/$MONAT--$TAG"
else
# Zielordner vorhanden
ZIELORDNERKOMPLETT=$ZIELORDNER/$JAHR/`ls $ZIELORDNER/$JAHR/ | grep $MONAT--$TAG`
fi
#
# Verschieben des Fotos vom quellordner in den zielordner/$jahr/$monat--$tag*/
# vorhandene Dateien werden mit dem Schalter -n nicht überschrieben (bei zufälliger Namensgleichheit)
mv -n $QUELLORDNER/$DATEINAME $ZIELORDNERKOMPLETT/$DATEINAME
echo "Verschieben von : "$QUELLORDNER/$DATEINAME" nach : "$ZIELORDNERKOMPLETT/$DATEINAME >> $LOGDATEI
fi
done
#
# Logdatei schreiben
#
echo "Letzte Ausführung des Skriptes am : "$(date) >> $LOGDATEI
echo $(expr $ZAEHLER)" Dateien verschoben." >> $LOGDATEI
echo $(expr $ZOHNEHEAD)" Dateien hatten keine ExifHeader und wurden nicht verschoben." >> $LOGDATEI
# Ausgabe der Logdatei zu Debugzwecken
cat $LOGDATEI
Eigentlich funktioniert es so wie es soll:
Es werden Fotos vom Quellordner in den Zielordner verschoben und gemäß dem Exifdatum wird eine Ordnerstruktur angelegt falls nicht vorhanden. Das ist praktisch wenn man mal wieder ewig die Fotos von der Kamera nicht runtergeladen hat.
Leider wirft er mir nach Aufruf von folgende Fehlermeldungen aus:
Ich habe jetzt schon so viel probiert, auskommentiert, gemacht und getan, dass ich den Wald vor Bäumen nicht mehr sehe. Ich bekomme die Quelle für die Fehlermeldung nicht raus. Wenn einer von euch da mal draufgucken könnte...sh: :: unknown operand
sh: :: unknown operand
sh: :: unknown operand
sh: :: unknown operand
Mein "Testszenario" sieht so aus:
5 Dateien im Quellordner, 3 Dateien *.JPG, 2 Dateien *.jpg (eine davon ohne Exifinfos)
Ich freue mich über jeden Tipp, denn ich weiß mittlerweile nicht mehr, [was ich] || [was ich noch nicht] ausprobiert habe. Zusätzlich bin ich auch für Tipps dankbar, die mir das Debuggen von Skripten oder die Fehlerbehandlung in den Skripten erleichtern. Viele Sachen, die sich im Internet finden, funktionieren unter Freetz nicht (z.B. http://www.pro-linux.de/artikel/2/111/ein-shellskript-template.html) weil dazu eine "bash-shell" erforderlich ist.