91 lines
4.0 KiB
Bash
91 lines
4.0 KiB
Bash
#! /bin/bash
|
|
shopt -s globstar || exit
|
|
for PIC in **
|
|
do
|
|
# look only for jpg
|
|
if [[ "$PIC" =~ \.JPG$ ]] || [[ "$PIC" =~ \.jpg$ ]]; then
|
|
echo "file_$PIC"
|
|
# get the date and time from the tag DateTimeOriginal
|
|
DATE=$(exiftool -p '$DateTimeOriginal' "$PIC" | sed 's/[: ]//g')
|
|
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
|
|
# check if DateTimeOriginal is 0000... OR empty
|
|
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
|
|
echo "datetimeoriginal_$LONGDATE"
|
|
# modify the attribute date with the info in the tag date
|
|
touch -t $LONGDATE "$PIC"
|
|
# customize date, in this case eliminate the time, getting only the date in 8 numbers and adding _
|
|
DATEMOD2=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
|
|
echo "datemod2_$DATEMOD2"
|
|
# skip renaming if
|
|
# 8 numbers at beginning followed by _ or after IMG_ or P_ and followed by _ (already date stamped)
|
|
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
|
|
:
|
|
else
|
|
# this will be done
|
|
|
|
filename=$(basename "$PIC")
|
|
echo "$filename"
|
|
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2""$filename"\""
|
|
#uncomment if you like it
|
|
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2$filename"
|
|
|
|
fi
|
|
else
|
|
# get the date and time from the tag HistoryWhen
|
|
|
|
DATE=$(exiftool -p '$HistoryWhen' "$PIC" | sed 's/[: ]//g')
|
|
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
|
|
|
|
# check if Historywhen is 0000... or empty
|
|
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
|
|
echo "historywhentag_$LONGDATE"
|
|
|
|
touch -t $LONGDATE "$PIC"
|
|
DATEMOD2B=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
|
|
echo "datemod2B_$DATEMOD2B"
|
|
|
|
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
|
|
:
|
|
else
|
|
# this will be done
|
|
filename=$(basename "$PIC")
|
|
echo "$filename"
|
|
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2B""$filename"\""
|
|
#uncomment if you like it
|
|
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2B$filename"
|
|
fi
|
|
|
|
else
|
|
# get the date and time from the tag tag filemodifydate
|
|
|
|
DATE=$(exiftool -p '$filemodifydate' "$PIC" | sed 's/[: ]//g')
|
|
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
|
|
|
|
# check if filemodifydate is 0000... or empty
|
|
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
|
|
#echo "filemodifydatetag_$LONGDATE"
|
|
|
|
#touch -t $LONGDATE "$PIC"
|
|
DATEMOD2C=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
|
|
echo "datemod2C_$DATEMOD2C"
|
|
|
|
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
|
|
:
|
|
else
|
|
# this will be done
|
|
filename=$(basename "$PIC")
|
|
echo "$filename"
|
|
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2C""$filename"\""
|
|
#uncomment if you like it
|
|
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2C$filename"
|
|
fi
|
|
|
|
else
|
|
|
|
echo "Error, NO date available"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
done
|