From 5546d006a3f0452450b05d36df2bec6c6333b629 Mon Sep 17 00:00:00 2001 From: Aaron Johnon Date: Fri, 12 Jan 2024 04:53:37 -0600 Subject: [PATCH] Wrote script for fixing stupid GoPro file names --- fix_gopro_filenames.sh | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 fix_gopro_filenames.sh diff --git a/fix_gopro_filenames.sh b/fix_gopro_filenames.sh new file mode 100755 index 0000000..6c7c28c --- /dev/null +++ b/fix_gopro_filenames.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +error_log=.fix_gopro_filenames_error.log + +if ! touch $error_log; then + printf '%b\n' "\e[1;31mERROR\e[1;37m:\e[0m Unable to write to current directory." >&2 + exit 1 +fi +printf '%s\n' 'Searching for GoPro video files...' +FILES=$(ls -1 | grep -E '^GX[0-9]{6}.MP4$') +if [ -z "$FILES" ]; then + printf '%b\n' "\e[1;31mERROR\e[1;37m:\e[0m No GoPro files with default names found in current directory." >&2 + exit 1 +fi +printf '%b\n' "\nFound:\n$FILES\n" +printf '%s' "Do you want to continue renaming these files? (y/N) " +read -n 1 response +if [ "$response" != "y" ] && [ "$response" != "Y" ]; then + printf '\n%s\n' "Aborted." + exit 1 +fi +printf '\n%s\n' "Continuing..." + +printf '%s\n' $FILES | while read -r i; do + sq=$(printf '%s\n' $i | awk '{print substr($0, 3, 2)}') + vn=$(printf '%s\n' $i | awk '{print substr($0, 5, 4)}') + oname="GX${sq}${vn}.MP4" + nname="GX${vn}_${sq}.MP4" + + printf '%b' "Renaming \e[1;33m${oname}\e[0m to \e[1;32m${nname}\e[0m... " + if mv $oname $nname 2>>$error_log; then + printf '%b\n' "\e[1mDONE\e[0m" + else + printf '%b\n' "\e[1;31mFAIL\e[0m" + fi +done + +if [ -s $error_log ]; then + printf '%b\n' " !!!\e[1;31m ERRORS ENCOUNTERED: \e[0m!!!\n------------" >&2 + printf '%b\n' "$(cat $error_log)\n------------" >&2 + rm "$error_log" + exit 3 +else + printf '%b\n' "\e[1;34m Complete!\e[0m" + rm "$error_log" + exit 0 +fi +