Veröffentlicht am 16.05.2020
Ich hab ein kleines Skript geschrieben, dass alle jpeg-Dateien so umbennent, dass ihr Dateiname mit dem Aufnahmedatum beginnt. Ich hab in meinem Linux ein Kommandozeilen-Programm namens exiftran
gefunden, dass das Datum ausgibt. Das Skript verwendet das dann, um die Datei umzubennen und das Erstellungsdatum der Datei auf die Zeit zu setzen, zu der das Foto gemacht wurde. Vielleicht kann es ja jemand benutzen.
#!/bin/bash
# "-maxdepth 1" means that find only searches in the current directory
# remove it to search in all subdirectories
find . -maxdepth 1 -iname '*.jpg' -o -iname '*.jpeg' |
while read JPG
do
# exiftran lists the properties of the jpeg,
# with a line including 0x9003 and the date
EXIFDATE=$(exiftran -d "$JPG" 2>/dev/null | grep "0x9003" | awk '{print $6, $7}')
if [ "$EXIFDATE" == "" ]
then
echo "Skipping $JPG"
continue
fi
read Y M D h m s <<< ${EXIFDATE//[-: ]/ }
NEWPREFIX=$Y$M$D_$h$m$s
OLDFILENAME=$(basename "$JPG")
OLDDIRNAME=$(dirname "$JPG")
# check that the file is not already properly named
OLDPREFIX=${OLDFILENAME:0:15}
if [ "$OLDPREFIX" != "$NEWPREFIX" ]
then
NEWFILE="$NEWPREFIX"_"$OLDFILENAME"
echo "Moving "$JPG" to "$OLDDIRNAME/$NEWFILE""
mv -i "$JPG" "$OLDDIRNAME/$NEWFILE"
touch "$OLDDIRNAME/$NEWFILE" --date="$Y$M$D $h:$m:$s"
else
echo "Skipping $JPG"
fi
done;