at_test / 3.2.Output_Batch_Create.sh
corsair4090's picture
Upload 10 files
e250d47 verified
#!/bin/bash
if [ -z "$BASH_VERSION" ]; then
echo "This script requires Bash to run."
exit 1
fi
image_ext=("jpg" "jpeg" "png" "bmp" "gif")
has_images() {
local folder="$1"
for ext in "${image_ext[@]}"; do
shopt -s nullglob
files=("$folder"/*."$ext")
shopt -u nullglob
if [ ${#files[@]} -gt 0 ]; then
return 0
fi
done
return 1
}
if [ ! -d "input" ]; then
echo "The 'input' folder does not exist. Please run the folder creation script first."
read -p "Press Enter to continue..."
exit 1
fi
all_folders_have_images=true
for folder in input/*/; do
if [ -d "$folder" ]; then
if has_images "$folder"; then
echo "The folder \"${folder}\" contains images."
else
echo "The folder \"${folder}\" does not contain any images."
all_folders_have_images=false
fi
fi
done
if [ "$all_folders_have_images" = false ]; then
echo
echo "Please place at least one image in each folder. A minimum of 20 images per folder is recommended."
read -p "Press Enter to continue..."
exit 1
fi
if [ ! -d "output" ]; then
mkdir "output"
echo "'output' folder created."
else
echo "The 'output' folder already exists."
fi
for folder in input/*/; do
if [ -d "$folder" ]; then
name=$(basename "$folder")
output_path="output/$name"
if [ ! -d "$output_path" ]; then
mkdir "$output_path"
echo "Folder '$output_path' created."
else
echo "Folder '$output_path' already exists."
fi
for sub in img log model; do
subfolder="$output_path/$sub"
if [ ! -d "$subfolder" ]; then
mkdir "$subfolder"
echo "Folder '$subfolder' created."
else
echo "Folder '$subfolder' already exists."
fi
done
special_folder="$output_path/img/30_${name} person"
if [ ! -d "$special_folder" ]; then
mkdir "$special_folder"
echo "Folder '$special_folder' created."
else
echo "Folder '$special_folder' already exists."
fi
fi
done
for folder in input/*/; do
if [ -d "$folder" ]; then
name=$(basename "$folder")
source_folder="$folder"
destination_folder="output/$name/img/30_${name} person"
echo "Copying images from \"$source_folder\" to \"$destination_folder\"..."
for ext in "${image_ext[@]}"; do
shopt -s nullglob
files=("$source_folder"/*."$ext")
shopt -u nullglob
if [ ${#files[@]} -gt 0 ]; then
cp -u "${files[@]}" "$destination_folder"/
fi
done
echo "Images copied for \"$name\"."
fi
done
echo
echo "Folders created and images copied successfully!"
read -p "Press Enter to continue..."