#!/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 " 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