Home > Computer, Linux, Software > Bilder im JPEG-Format nach Größe und EXIF-Informationen sortieren und umbenennen

Bilder im JPEG-Format nach Größe und EXIF-Informationen sortieren und umbenennen

Nach der wegen meiner eigenen Doofheit fälliggewordenen Datenrettungsaktion habe ich nun eine Unmenge unsortierter Fotos im JPEG-Format auf der Platte.

Wenn schon meine Doofheit Schuld an dieser Lage ist, muss ich halt etwas mehr Gehirnschmalz investieren, um dieser einigermaßen Herr zu werden.

Eins ist von vornherein klar: Ohne eine automatische Sortierung komme ich nicht weiter.
Zum Glück hat Linux ja schon alles „an Bord”, was ich dafür brauche.

Hauptsächlich geht es mir ja um meine selbst aufgenommenen Fotos. Daher habe ich mich entschieden, die Bilder zuerst einmal nach der Angabe des Kameramodells in den EXIF-Tags in verschiedene Verzeichnisse zu sortieren und die Dateien jeweils anhand des ebenfalls per EXIF in der Datei enthaltenen Aufnahmedatums umzubenennen.

Wenn keine EXIF-Informationen in der Datei vorhanden ist, wird sie entsprechend ihrer Bildgröße in einen Ordner einsortiert.

Dies erledigt das folgende kleine Bash-Skript (quick&dirty, aber ich stelle es hier dennoch rein, für den Fall, dass es noch jemand anderem behilflich sein kann):

#!/bin/bash
 
# JPEG-Dateien nach Kamera-Modell und Aufnahmedatum sortieren
 
for F in *; 
	do 
 
	# Statusmeldung kann nie schaden:
	echo "Processing File $F..."
 
	MAGIC=`file "$F"`; # inhaltsbasiert bestimmen, um was für einen Dateityp es sich handelt
 
	# handelt es sich um eine JPEG-Datei?
	if [[ $MAGIC =~ "JPEG" ]]; then 
 
 
		if [[ $MAGIC =~ "EXIF" ]]; then
			# file has EXIF info...
 
			# HERST=`exif --ifd=0 --tag 0x010e -m "$F"` # für einige Kameras nicht definiert, kostet nur Zeit...
			# echo "    Hersteller: $HERST"
			MODEL=`exif --ifd=0 --tag 0x0110 -m "$F"`
			echo "    Modell: $MODEL"
 
			DATETIMEORIG=`exif --ifd=EXIF --tag 0x9003 -m "$F"`
			echo "    DateTimeOriginal: $DATETIMEORIG"
 
			IFS=" "
			values=( $DATETIMEORIG  )
			EXIF_DATE=${values[0]}
			EXIF_TIME=${values[1]}
 
 
			IFS=":"
			values=( $EXIF_DATE )
			EXIF_YEAR=${values[0]}
			EXIF_MONTH=${values[1]}
			EXIF_DAY=${values[2]}
 
			values=( $EXIF_TIME )
			EXIF_HOUR=${values[0]}
			EXIF_MINUTE=${values[1]}
			EXIF_SECOND=${values[2]}
 
			IFS=" "
 
			TIME_NEW="${EXIF_YEAR}-${EXIF_MONTH}-${EXIF_DAY} ${EXIF_HOUR}.${EXIF_MINUTE}.${EXIF_SECOND}"
			echo "    DateTime f. Name: $TIME_NEW"
 
			NEWDIR="$MODEL";
			NEWNAME="$TIME_NEW ${F}.JPG"
			DEST="${NEWDIR}/${NEWNAME}"
 
			# move the file to subfolder and rename it
			mkdir -p "$NEWDIR"
			MOVERES=`mv -v "$F" "$DEST"`
			echo "    $MOVERES"
 
		else
			# file has no EXIF info
			echo "    No EXIF info found."
 
			# jpeginfo aufrufen, um an Dimensionen des Bildes zu kommen
			JPEGINFO=`jpeginfo "$F"`;
			echo "    $JPEGINFO";
 
			if [[ $JPEGINFO =~ "ERROR" ]]; then
				# jpeginfo gab Fehler aus => keine Info über Bilddimensionen
				NEWDIR="jpeginfo-ERROR";
			else
        		       	WIDTH=$(echo $JPEGINFO | sed 's/.*[[:space:]]\([[:digit:]]*\)[[:space:]]x[[:space:]]\([[:digit:]]*\).*/\1/')
	                	HEIGHT=$(echo $JPEGINFO | sed 's/.*[[:space:]]\([[:digit:]]*\)[[:space:]]x[[:space:]]\([[:digit:]]*\).*/\2/')
				echo "    Dimension: $WIDTH x $HEIGHT"
				NEWDIR="noEXIF-${WIDTH}x${HEIGHT}";
			fi
 
			NEWNAME="${F}.JPG"
			DEST="${NEWDIR}/${NEWNAME}"
 
			# move the file to subfolder and rename it
			mkdir -p "$NEWDIR"
			MOVERES=`mv -v "$F" "$DEST"`
			echo "    $MOVERES"
 
		fi
 
		echo # Leerzeile für Übersichtlichkeit
	fi
done;

Timo Holle Computer, Linux, Software , , , , ,

  1. 6. September 2008, 03:28 | #1

    Ein Durchlauf des Programms recoverjpeg (mit dem Aufruf “recoverjpeg -b 1 -m 10m formatierte_platte.img”) benötigte im Hintergrund ca. 3 1/2 Stunden und lieferte 602 358 “wiederhergestellte” Bilder. Darin enthalten sind allerdings sämtliche Einzelframes z.B. aus den mit der kompakten Digitalkamera aufgenommenen Videos, da diese in einem QuickTime-Container im M-JPEG-Format abgespeichert werden.

    Ohne eine geschickte Vorsortierung wäre das wohl eine Menge Arbeit, diese Massen an Bildern zu sichten.

  1. Bisher keine Trackbacks
Du musst Dich anmelden um einen Kommentar zu schreiben