以下是一个Bash脚本示例,用于识别子目录中的文件扩展名,并根据扩展名将父目录分组:
#!/bin/bash
declare -A groups
# 遍历子目录中的文件
find . -type f | while read file; do
# 获取文件的扩展名
extension="${file##*.}"
extension="${extension,,}" # 将扩展名转换为小写(可选)
# 获取文件的父目录
parent_dir="$(dirname "$file")"
# 将文件添加到相应的扩展名组中
if [[ -n "${groups[$extension]}" ]]; then
groups[$extension]="${groups[$extension]} $parent_dir"
else
groups[$extension]="$parent_dir"
fi
done
# 打印分组结果
for extension in "${!groups[@]}"; do
echo "扩展名: $extension"
echo "父目录: ${groups[$extension]}"
echo
done
该脚本使用find
命令遍历当前目录及其子目录中的所有文件。对于每个文件,它提取文件的扩展名和父目录,并将文件添加到相应的扩展名组中。最后,它打印出分组结果。
你可以将脚本保存为一个名为group_files_by_extension.sh
的文件,然后在终端中运行bash group_files_by_extension.sh
来执行它。注意,你可能需要在运行脚本之前给予执行权限(使用chmod +x group_files_by_extension.sh
命令)。