After almost every holiday i find myself in the same problem:
I have made pictures with multiple cameras, phones and maybe there are some pics sent by friends.
Every camera has its own pattern how the files are named, if you want to watch them chronologically, you can sort them by hand or you use the jpeg timestamp and some lines of shell code:
#!/bin/bash TARGET="/tmp/chronosort-`date +%F`-$RANDOM" mkdir "$TARGET" echo "target directory: $TARGET" find . -type f | while read PIC; do echo PIC: ${PIC} if [ -f "$PIC" ]; then # see if PIC is a file if [[ "$(file -b --mime-type "$PIC" )" == "image/jpeg" ]]; then TIMESTAMP_STRING=$(exiv2 "$PIC" | grep -i timestamp | grep -Eo "[0-9].*[0-9]") # echo "timestamp string from exif data: $TIMESTAMP_STRING" # convert the exif string to a date: DATE="$( date -d "$( echo ${TIMESTAMP_STRING} \ | sed 's|\([0-9]*\):\([0-9]*\):\([0-9]*\) \([0-9]*\):\([0-9]*\):\([0-9]*\)|\1/\2/\3 \4:\5:\6|g' )" )" # apply offset for specific camera model (optional) if ( exiv2 "$PIC" | grep "Camera" | grep -qi "casio" ); then echo modifying time for casio camera... # DATE="$( date -d "$DATE -31 minutes" )" fi echo "DATE: ${DATE}" DATE_FILENAME=$( date -d "$DATE" "+%Y-%m-%d_%H:%M:%S" ) TARGET_NAME="${DATE_FILENAME}__$(basename "$PIC" )" TARGET_FILE="$TARGET/$TARGET_NAME" # echo TARGET_FILE: $TARGET_FILE # create dir if needed: mkdir -pv "$(dirname "$TARGET_FILE" )" cp -v "$PIC" "$TARGET_FILE" else echo "Not a file, skipping $PIC....." fi echo fi done