# 检查目录是否存在 if [[ ! -d "$TARGET_DIR" ]]; then echo "目录 $TARGET_DIR 不存在" exit 1 fi
# 使用 find 命令递归查找所有带扩展名的文件 find "$TARGET_DIR" -type f | while read -r file; do # 提取文件名和扩展名 filename=$(basename "$file") name_only="${filename%.*}" ext="${filename##*.}"
# 判断是否已经是标准格式,如 EBOD-912-cd2.mp4 或 DGCEMD-005-cd1.mp4 if [[ "$name_only" =~ ^([A-Za-z0-9-]+)(-cd[1-9])?$ ]]; then echo "Skipped (already in standard format): '$filename'" continue fi
# 尝试匹配 ID(字母+数字+-) if [[ "$name_only" =~ ^([A-Za-z0-9-]+) ]]; then base_name="${BASH_REMATCH[1]}"
# 获取最后一个点之前的那个字符 if (( last_dot_pos > 0 )); then last_char="${filename:last_dot_pos-1:1}"
# 检查这个字符是否为数字1-9 if [[ "$last_char" =~ [1-9] ]]; then digits="$last_char" new_name="${base_name}-cd${digits}.${ext,,}" else new_name="${base_name}.${ext,,}" fi else new_name="${base_name}.${ext,,}" fi
# 如果原文件名和目标文件名相同,跳过 if [[ "$filename" == "$new_name" ]]; then echo "Skipped (already named correctly): '$filename'" continue fi
# 使用 mv 命令重命名文件,并确保正确处理空格和特殊字符 mv -- "$file" "$(dirname "$file")/$new_name" echo "Renamed '$filename' to '$new_name'" else echo "No match pattern for '$filename'" fi done