88 lines
2.0 KiB
Bash
Executable File
88 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
checkcommand()
|
|
{
|
|
local result
|
|
local command="$1"
|
|
which "$command" 1>/dev/null 2>&1
|
|
if [[ $? == 0 ]]; then
|
|
echo "$command requirement OK"
|
|
result=1
|
|
else
|
|
echo "$command requirement MISSING"
|
|
result=0
|
|
fi
|
|
return $result
|
|
}
|
|
|
|
help()
|
|
{
|
|
echo "Usage: rphoto [ -h | -f ] [ *.jpg ]"
|
|
echo "Rename jpg files using Exif Original Date/Time if exists."
|
|
echo " -h Display help."
|
|
echo " -f Force rename jpg files with Exif datetime or file datetime."
|
|
}
|
|
|
|
doRename()
|
|
{
|
|
local filename=$(basename $1)
|
|
#echo "$filename"
|
|
jhead -nimg%Y%m%d-%H%M%S "$filename"
|
|
}
|
|
|
|
doRenameCarefully()
|
|
{
|
|
local filename=$(basename $1)
|
|
#echo "$filename"
|
|
if [[ $filename =~ IMG[12][90][0-9][0-9][01][0-9][0-3][0-9][012][0-9][0-5][0-9][0-5][0-9].* ]]; then
|
|
local target=img${filename:3:8}-${filename:11}
|
|
if [ -e "$target" ]; then
|
|
echo "$filename -r> $target ABORT because file already exists."
|
|
else
|
|
echo "$filename -r> $target"
|
|
mv "$filename" "$target"
|
|
fi
|
|
elif [[ $(exiftool $filename | grep -c "Date/Time Original") > 0 ]]; then
|
|
#echo "yop $filename"
|
|
doRename "$filename"
|
|
else
|
|
echo "$filename IGNORED"
|
|
fi
|
|
}
|
|
|
|
# main
|
|
checkcommand "exiftool"
|
|
if [[ $? == 0 ]]; then
|
|
exit 1
|
|
else
|
|
checkcommand "jhead"
|
|
if [[ $? == 0 ]]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [[ $# == 0 ]]; then
|
|
find . -maxdepth 1 -type f -iname "*.jpg" | while read path
|
|
do
|
|
doRenameCarefully "$path"
|
|
done
|
|
elif [[ "$1" == "-h" ]]; then
|
|
help
|
|
elif [[ "$1" == "-f" && $# == 1 ]]; then
|
|
find . -maxdepth 1 -type f -iname "*.jpg" | while read path
|
|
do
|
|
doRename "$path"
|
|
done
|
|
elif [[ "$1" == "-f" && $# > 1 ]]; then
|
|
for filename do
|
|
if [[ "$filename" != "-f" ]]; then
|
|
doRename "$filename"
|
|
fi
|
|
done
|
|
else
|
|
for filename do
|
|
doRenameCarefully "$filename"
|
|
done
|
|
fi
|
|
|