calculate_file_size() {
local DIR_PATH=$1
local EXT=$2
local files=()
local total_size=0
# 使用find命令查找指定目录及其子目录中指定扩展名的文件,并处理文件名包含特殊字符的情况
while IFS= read -r -d '' file; do
files+=("$file")
local file_size=$(stat -c %s "$file")
total_size=$((total_size + file_size))
done < <(find "$DIR_PATH" -name "*.$EXT" -type f -print0)
# 按文件大小从大到小排序
local sorted_files=($(for file in "${files[@]}"; do echo $(stat -c %s "$file") "$file"; done | sort -nr | cut -d ' ' -f 2-))
echo "Total size of files with extension $EXT in $DIR_PATH: $total_size bytes"
echo "Files sorted by size (descending):"
for file in "${sorted_files[@]}"; do
local file_size=$(stat -c %s "$file")
echo "$file: $file_size bytes"
done
}