#!/bin/bash
# Check if a directory is provided as an argument
if [ $# -eq 0 ]; then
echo "Usage: $0 <directory>"
exit 1
fi
# Array to store directory information
declare -a dir_info
# Function to calculate the size of a directory
calculate_directory_size() {
local dir=$1
local level=$2
# Calculate the size of the directory (excluding subdirectories)
size=$(du -sh $dir | awk '{print $1}')
# Count the number of files in the directory (excluding subdirectories)
file_count=$(find $dir -maxdepth 1 -type f | wc -l)
# Store directory information in the array
dir_info+=("Level $level: Directory: $dir, Size: $size, Files: $file_count")
# Check if the maximum recursion level is reached
if [ $level -lt 5 ]; then
# Iterate over subdirectories
for subdir in $(find $dir -maxdepth 1 -mindepth 1 -type d); do
# Recursively calculate the size of subdirectories
calculate_directory_size "$subdir" $((level + 1))
done
fi
}
# Main script
target_directory=$1
calculate_directory_size "$target_directory" 1
# Sort and display directory information
IFS=$'\n' sorted_info=($(sort <<<"${dir_info[*]}"))
unset IFS
for info in "${sorted_info[@]}"; do
echo "$info"
done