1
0
Fork 0
bin/organise-photos

57 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# This script takes all the jpg and mp4 files in a directory and
# organises them into a folder structure based on the month and year
# they were last modified (taken).
DRY_RUN=false
while test $# -gt 0
do
case "$1" in
--help)
echo organise-photos
echo " by Starbeamrainbowlabs <feedback@starbeamrainbowlabs.com>"
echo "This script takes all the jpg and mp4 files in a directory and organises them into a folder structure based on the month and year they were last modified (taken)."
echo
echo "Options:"
echo " --help"
echo " Show this help message"
echo " --dry-run"
echo " Do a dry run - don't actually move any files."
exit
;;
--dry-run)
echo Activating dry run mode.
DRY_RUN=true
esac
shift
done
find . -maxdepth 1 \( -iname "*.jpg" -o -iname "*.mp4" \) -print0 | while read -r -d '' filename
do
echo -ne "Processing ${filename} - ";
takenYear=$(date -r "${filename}" +%Y);
takenMonth=$(date -r "${filename}" +%-m);
takenMonthText=$(date -r "${filename}" +%B);
newFolder="${takenYear}/${takenMonth}-${takenMonthText}/";
newFilename="${newFolder}${filename}";
echo -ne "filing in ${newFolder} - ";
if [ "$DRY_RUN" = true ] ; then
echo dry run
continue
fi
mkdir -p "${newFolder}";
mv "${filename}" "${newFilename}";
echo Done\!;
done
echo "*** Complete! ***"
exit 0