52 lines
1.3 KiB
Bash
Executable File
52 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
## Checks given folder for files with certain extensions. Subfolders are checked recursively.
|
|
## $1 Folder to check.
|
|
## $2 space separated list of extensions to check for. e.g.: "*.jpg *.JPG *.mp4 *.MP4".
|
|
## returns Count of files found with the desired extension.
|
|
|
|
__check_folder() {
|
|
local _FOLDER=$1;
|
|
local _EXTENSIONS=$2;
|
|
local _FILE_C=0;
|
|
if [ -d "$_FOLDER" ]; then # is a folder
|
|
local _ITEM="";
|
|
local _FC=${#FILESNPATHS[@]};
|
|
pushd "$_FOLDER" 1>/dev/null;
|
|
for _ITEM in ${_EXTENSIONS}; do # lookup all files with the desired extensions
|
|
if [[ -f "$_ITEM" ]]; then # is a file
|
|
FILESNPATHS[$_FC]="$(pwd)/$_ITEM";
|
|
((_FC+=1));
|
|
((_FILE_C+=1));
|
|
fi
|
|
done
|
|
# check subfolders if exist
|
|
local _SUBFOLDERS="$(/usr/bin/ls . 2>/dev/null)";
|
|
local _CNT=0;
|
|
for _SUBITEM in ${_SUBFOLDERS}; do
|
|
if [[ -d "$_SUBITEM" ]]; then
|
|
__check_folder "$_SUBITEM" "$_EXTENSIONS";
|
|
_CNT=$?
|
|
((_FILE_C+=_CNT));
|
|
fi
|
|
done
|
|
popd 1>/dev/null;
|
|
fi
|
|
return $_FILE_C
|
|
}
|
|
|
|
|
|
__test() {
|
|
MYFOLDER="./test";
|
|
__check_folder $MYFOLDER "*.jpg *.JPG *.mp4 *.MP4"
|
|
FILE_COUNT=$?
|
|
echo "Found $FILE_COUNT files in folder $MYFOLDER, length of files array is ${#FILESNPATHS[*]}.";
|
|
for ((FILE_C=0;FILE_C<${#FILESNPATHS[*]};FILE_C++)); do
|
|
echo "$FILE_C ${FILESNPATHS[$FILE_C]}";
|
|
done
|
|
}
|
|
|
|
declare -A FILESNPAHTS;
|
|
|
|
__test
|