diff --git a/exiffromfn2.sh b/exiffromfn2.sh new file mode 100755 index 0000000..141acb8 --- /dev/null +++ b/exiffromfn2.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Sets EXIF date from filename yyyymmdd-HHMM.jpg +for f in *.jpg *.JPG; do + if [ "$f" = "*.jpg" -o "$f" = "*.JPG" ]; then + continue + fi + echo "File: $f" + DATEPART=${f:0:13} + if [ ${#DATEPART} -ne 13 ]; then + echo "No date in filename: $f" + continue + fi + + if ! [[ "$DATEPART" =~ ^(198|199|200|201|202)[0-9]{5}-[0-9]{4}$ ]]; then + echo "Not numeric: $DATEPART ($f)" + continue + fi + + YEAR=${DATEPART:0:4} + MONTH=${DATEPART:4:2} + DAY=${DATEPART:6:2} + HOUR=${DATEPART:9:2} + MINUTE=${DATEPART:11:2} + SECOND="00" + + 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/exiffromfn3.sh b/exiffromfn3.sh new file mode 100755 index 0000000..dc46a99 --- /dev/null +++ b/exiffromfn3.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Sets EXIF date from filename yymmdd_HHMMSS.jpg +for f in *.jpg *.JPG; do + if [ "$f" = "*.jpg" -o "$f" = "*.JPG" ]; then + continue + fi + echo "File: $f" + DATEPART=${f:0:13} + if [ ${#DATEPART} -ne 13 ]; then + echo "No date in filename: $f" + continue + fi + + if ! [[ "$DATEPART" =~ ^[0-1][0-9]{5}_[0-9]{6}$ ]]; then + echo "Not numeric: $DATEPART ($f)" + continue + fi + + YEAR="20${DATEPART:0:2}" + MONTH=${DATEPART:2:2} + DAY=${DATEPART:4:2} + HOUR=${DATEPART:7:2} + MINUTE=${DATEPART:9:2} + SECOND=${DATEPART:11:2} + + DATE="$YEAR:$MONTH:$DAY $HOUR:$MINUTE:$SECOND" + exiv2 mo -M "set Exif.Photo.DateTimeOriginal '$DATE'" -M "set Exif.Photo.DateTimeDigitized '$DATE'" $f +done