Dieses Script dient zum Umbenennen von JPGs anhand des Datums der Exif-Tags. Das ist vor allem dann nützlich, wenn vom selben Ereignis Bilder von unterschiedlichen Personen vorliegen, und diese zeitlich geordnet werden sollen.
Das Script ermittelt das Erstellungsdatum, wandelt es in Sekunden seit 1970-01-01 00:00:00 UTC um, und addiert oder subtrahiert auf Wunsch eine beliebige Zahl an Stunden (falls jemand wieder Sommer- mit Winterzeit verwechselt hat :)). Außerdem kann noch ein Suffix festgelegt werden, damit man die Bilder nach ihrer Umbenennung noch dem Autor zuordnen kann.
#!/bin/sh test -e /usr/bin/exif || exit 1 set -e echo -n "time shift in hours (without leading '+', default 0): " read shift if [ "$shift" == "" ] then shift="0" fi echo -n "filename suffix (leave blank for none): " read suffix for i in $(ls *.[jJ][pP][gG]) do # date from exif tags, convert first two ':' to '-' # e.g. 2006:11:25 02:07:27 -> 2006-11-25 02:07:27 exifdate=$(exif $i | grep Date | head -1 | cut -d '|' -f2 | sed 's/:/-/' | sed 's/:/-/') # convert date to seconds since 1970-01-01 00:00:00 UTC date=$(date -d "$exifdate" "+%s") # add/subtract time shift name=$(echo "$date + ($shift * 60 * 60)" | bc) # rename image to 'SecondsSuffix.jpg' mv -v "$i" "$name$suffix.jpg" done
Vor dem Umbenennen sollte ggf. ein Backup der Bilder erstellt werden.
$ ~/scripts/exif.sh time shift in hours (without leading '+', default 0): -1 filename suffix (leave blank for none): _bert `100_0290.jpg' -> `1164395565_bert.jpg' `100_0291.jpg' -> `1164395586_bert.jpg' `100_0292.jpg' -> `1164395591_bert.jpg' `100_0293.jpg' -> `1164395616_bert.jpg' `100_0294.jpg' -> `1164395659_bert.jpg' `100_0295.jpg' -> `1164395723_bert.jpg' `100_0296.jpg' -> `1164396038_bert.jpg' `100_0297.jpg' -> `1164396585_bert.jpg'