Skip to content

Instantly share code, notes, and snippets.

@WanpengQian
Last active September 13, 2019 01:30
Show Gist options
  • Save WanpengQian/33a3558bfa575e6df885a6fe87dfd07a to your computer and use it in GitHub Desktop.
Save WanpengQian/33a3558bfa575e6df885a6fe87dfd07a to your computer and use it in GitHub Desktop.
#!/bin/sh
COLOR_RED="\e[33;31;1m"
COLOR_OFF="\e[m"
if [ -z "$1" ]
then
echo "No argument supplied"
exit 1
fi
FROM=$1
EXT="${FROM##*.}"
# Remove leading ./
FIRST2CH=`echo "$FROM" | cut -c1-2`
if [ "$FIRST2CH" == "./" ]; then
FROM=`echo "$FROM" | cut -c 3-`
fi
echo "----------------------------------------------------"
echo "Processing ${FROM}"
EXIF=`exiftool "${FROM}"`
TYPE=`echo "$EXIF" | grep -e MIME | tail -n 1 | awk -F": " '{print $2}' | cut -c1-5 `
if [ "$TYPE" == "image" ] || [ "$TYPE" == "video" ]; then
EXT=`echo "$EXIF" | grep -e "File Type Extension" | tail -n 1 | awk -F": " '{print $2}' `
else
echo "Not a multimedia file. No more further process."
exit 0
fi
echo "Extension is ${EXT}..."
DATE=`echo "$EXIF" | grep -e Create | tail -n 1 | awk -F": " '{print $2}' | tr -d ":" `
echo "Taken at ${DATE}..."
if [ -z "${DATE}" ]; then
DATE=`echo "$EXIF" | grep -e Modification | tail -n 1 | awk -F": " '{print $2}' | tr -d ":" `
#DATE=`openssl rand -rand "${FROM}" -hex 16`
echo "DATE is null, Fetch date from file. ${DATE}..."
[ -z "${DATE}" ] && exit 0
fi
DEVICE=`echo "$EXIF" | grep -e Model | head -n 1 | awk -F": " '{print $2}'`
echo "Taken by ${DEVICE}..."
if [ -z "${DEVICE}" ]; then
DEVICE="EXIF"
else
DEV=`echo ${DEVICE} | cut -c1-9 `
if [ "$DEV" == "iPhone 5s" ]; then
DEVICE="$DEV"
fi
fi
TO="${DEVICE}_${DATE}.${EXT}"
echo "Origin file name: $FROM"
echo "Plan change to : $TO"
if [ "$FROM" == "$TO" ]; then
echo "FROM and TO are the same. exit"
exit 0
fi
CNT=0
while [ -e "${TO}" ]; do
let CNT=CNT+1
TO="${DEVICE}_${DATE}_${CNT}.${EXT}"
done
echo -e "${COLOR_RED}Rename $FROM to $TO...${COLOR_OFF}"
[ ! -e "${TO}" ] && mv -- "$FROM" "$TO"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment