From 1f557b43af98a961eed03323d167fb8f21ed8775 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Thu, 22 Oct 2015 22:48:09 +0200 Subject: [PATCH] Added tools for EXIF manipulation. Added find_exsts.sh. --- exif2fdate.sh | 2 ++ exifdate.sh | 9 +++++++++ exiffromfn.sh | 29 +++++++++++++++++++++++++++++ find_exts.sh | 2 ++ 4 files changed, 42 insertions(+) create mode 100755 exif2fdate.sh create mode 100755 exifdate.sh create mode 100755 exiffromfn.sh create mode 100755 find_exts.sh diff --git a/exif2fdate.sh b/exif2fdate.sh new file mode 100755 index 0000000..5406713 --- /dev/null +++ b/exif2fdate.sh @@ -0,0 +1,2 @@ +#!/bin/sh +find -type f -iname '*.jpg' -print0 | xargs -0 exiv2 mv -T diff --git a/exifdate.sh b/exifdate.sh new file mode 100755 index 0000000..02c9280 --- /dev/null +++ b/exifdate.sh @@ -0,0 +1,9 @@ +#!/bin/sh +if [ -z "$1" -o -z "$2" ]; then + echo "Syntax: $0 DATE FILE1 [FILE2 [..FILEn]]" + exit 1 +fi + +DATE=$1 +shift +exiv2 mo -M "set Exif.Photo.DateTimeOriginal '$DATE'" -M "set Exif.Photo.DateTimeDigitized '$DATE'" $@ diff --git a/exiffromfn.sh b/exiffromfn.sh new file mode 100755 index 0000000..fce901e --- /dev/null +++ b/exiffromfn.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Sets EXIF date from filename yyyymmddHHMMSS.jpg +for f in *.jpg *.JPG; do + if [ "$f" = "*.jpg" -o "$f" = "*.JPG" ]; then + continue + fi + echo "File: $f" + DATEPART=${f:0:14} + if [ ${#DATEPART} -ne 14 ]; then + echo "No date in filename: $f" + continue + fi + + if ! [[ "$DATEPART" =~ ^(198|199|200|201|202)[0-9]+$ ]]; then + echo "Not numeric: $DATEPART ($f)" + continue + fi + + YEAR=${DATEPART:0:4} + MONTH=${DATEPART:4:2} + DAY=${DATEPART:6:2} + HOUR=${DATEPART:8:2} + MINUTE=${DATEPART:10:2} + SECOND=${DATEPART:12:2} + + DATE="$YEAR:$MONTH:$DAY $HOUR:$MINUTE:$SECOND" + + exiv2 mo -M "set Exif.Photo.DateTimeOriginal '$DATE'" -M "set Exif.Photo.DateTimeDigitized '$DATE'" $f +done diff --git a/find_exts.sh b/find_exts.sh new file mode 100755 index 0000000..11df2fe --- /dev/null +++ b/find_exts.sh @@ -0,0 +1,2 @@ +#!/bin/sh +find -type f -print | sed 's/^.*\.\([a-zA-Z0-9]\+\)$/\1/gm' | sort -u