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