From be4e3c9fd99716f17ecb7dad2621733dc1fc8cb0 Mon Sep 17 00:00:00 2001 From: Brandon Rodriguez <brodriguez8774@gmail.com> Date: Sun, 11 Oct 2020 15:17:38 -0400 Subject: [PATCH] Improve handling for when file extension is unrecognized --- run.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/run.sh b/run.sh index 2d0b33f..4a43398 100755 --- a/run.sh +++ b/run.sh @@ -61,7 +61,7 @@ function main () { # Verify is file. if [[ -f ${file} ]] then - handle_file ${file} + handle_file ${file} "" "" fi done @@ -76,13 +76,19 @@ function main () { ### # Full handling for single file. + # Determines full directory location (based on file type) and then calls move_file() function. ## function handle_file () { local file=${1} - parse_file_name ${file} - to_lower ${file_extension} - file_extension=${return_value} + + if [[ "${file_extension}" == "" ]] + then + # First, non-recursive entry into function. + parse_file_name ${file} + to_lower ${file_extension} + file_extension=${return_value} + fi # Handle based on found extension. # Handle images. @@ -132,7 +138,7 @@ function handle_file () { # Handle flash files. elif [[ "${file_extension}" == ".flv" || - "${file_extension}" == ".sfw" ]] + "${file_extension}" == ".swf" ]] then output_subdir="${output_dir}/Flash" @@ -145,6 +151,7 @@ function handle_file () { # Move file. move_file + # Handle document files. elif [[ "${file_extension}" == ".doc" || "${file_extension}" == ".docx" ]] @@ -200,13 +207,46 @@ function handle_file () { # Move file. move_file + # Handle all other file types. else - echo " Is unknown type." + # Check if file had a period in its name. If so, we can check against a smaller extension value. + local file_extension_1=${file_extension%.*} + local file_extension_2=${file_extension#${file_extension_1}} + if [[ "${file_extension_1}" != "" && "${file_extension_2}" ]] + then + # Period found in file name. Adjust values accordingly. + file_name=${file_name}${file_extension_1} + file_extension=${file_extension_2} + + # Recursively call function to handle newly parsed file extension. + handle_file ${file_name} ${file_extension} + else + # Extension is already smallest possible format. Unknown file extension. + output_subdir="${output_dir}/Other" + + # Verify location exists. + if [[ ! -d ${output_subdir} ]] + then + mkdir ${output_subdir} + fi + + # Move file. + move_file + fi + fi + + # Reset values for next file. + file_name="" + file_extension="" } +### + # Handles physically moving file between locations. + # Includes handling for if file with identical name already exists in output directory. + ## function move_file () { local file_name_counter=0 local orig_file_name=${file_name} -- GitLab