# 列出所有文件 list_files() { local directory="$1" find "$directory" -maxdepth 1 -type f }
# 显示文件列表 display_files() { local files=("$@") echo"List of files:" for file in"${files[@]}"; do echo"$file" done }
# 合并文件 merge_files() { local files=("$@") declare -A file_dict local errors=()
# 分类文件 for file in"${files[@]}"; do base_name=$(basename"$file" | sed 's/\.[^.]*$//') if [[ -z "${file_dict["$base_name"]}" ]]; then file_dict["$base_name"]="" fi file_dict["$base_name"]+="$file;" done
# 创建新文件夹并移动文件 for base_name in"${!file_dict[@]}"; do IFS=';'read -r -a file_list <<< "${file_dict["$base_name"]}" new_folder="$(dirname "${file_list[0]}")/$base_name" mkdir -p "$new_folder" for file in"${file_list[@]}"; do mv"$file""$new_folder" 2>/dev/null if [ $? -ne 0 ]; then errors+=("$file") fi done echo"Files moved to $new_folder" done
# 列出出错的文件 if [ ${#errors[@]} -gt 0 ]; then echo"The following files could not be moved:" for error in"${errors[@]}"; do echo"$error" done else echo"All files moved successfully." fi }
# 主函数 main() { if [ $# -ne 1 ]; then echo"Usage: $0 <directory-path>" exit 1 fi
local directory="$1"
if [ ! -d "$directory" ]; then echo"Error: Directory $directory does not exist." exit 1 fi
read -p "Do you want to merge files with the same name but different extensions? (Y/N): " choice if [[ "$choice" == "Y" || "$choice" == "y" ]]; then merge_files "${files[@]}" else echo"No files were merged." fi }