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