#!/bin/bash
declare -A file_type_count
file_type_count["regular_file"]=0
file_type_count["directory"]=0
file_type_count["symbolic_link"]=0
dfs() {
local dir=$1
for item in "$dir"/*; do
if [ -f "$item" ]; then
((file_type_count["regular_file"]++))
elif [ -d "$item" ]; then
((file_type_count["directory"]++))
dfs "$item"
elif [ -L "$item" ]; then
((file_type_count["symbolic_link"]++))
fi
done
}
if [ -z "$1" ]; then
echo "Usage: $0 <directory_path>"
exit 1
fi
dfs "$1"
echo "Regular files: ${file_type_count["regular_file"]}"
echo "Directories: ${file_type_count["directory"]}"
echo "Symbolic links: ${file_type_count["symbolic_link"]}"