#!/bin/bash # 这个脚本用于还原 EXIF 数据,传递原始 EXIF 图片的路径(第一个参数),还原修改过 EXIF 的图片的路径(第二个参数) # Example: ./recover-modified-photo-exif.sh /Volumes/未命名导出 . # 检查参数 if [ "$#" -ne 2 ]; then echo "用法: $0 <源文件夹路径> <被修改的文件夹路径>" exit 1 fi SOURCE_DIR="$1" TARGET_DIR="$2" SUCCEED_DIR="$TARGET_DIR/succeed" # 检查并创建 succeed 目录 if [ ! -d "$SUCCEED_DIR" ]; then mkdir -p "$SUCCEED_DIR" echo "创建 succeed 目录: $SUCCEED_DIR" fi # 处理被修改的文件夹中的所有 PNG 文件 for png_file in "$TARGET_DIR"/*.png; do # 跳过 succeed 目录中的文件 if [[ "$png_file" == *"/succeed/"* ]]; then continue fi # 检查文件是否存在(防止没有 png 文件时报错) if [ ! -f "$png_file" ]; then continue fi # 获取文件名(不包括路径和扩展名) filename=$(basename "$png_file") base_filename="${filename%.png}" jpg_file="$TARGET_DIR/$base_filename.jpg" succeed_jpg_file="$SUCCEED_DIR/$base_filename.jpg" # 如果当前目录或 succeed 目录下同名 JPG 文件已存在,则跳过 if [ -f "$jpg_file" ] || [ -f "$succeed_jpg_file" ]; then echo "$jpg_file 或 $succeed_jpg_file 已存在,跳过 PNG 转换" continue fi # 使用 ImageMagick 的 convert 命令将 PNG 转换为 JPG,设置质量为100(无压缩) convert "$png_file" -quality 100 "$jpg_file" echo "$filename 已转换为 JPG: $jpg_file" done # 遍历被修改的文件夹中的所有 JPG 文件 for target_file in "$TARGET_DIR"/*.jpg; do # 跳过 succeed 目录中的文件 if [[ "$target_file" == *"/succeed/"* ]]; then continue fi # 获取文件名(不包括路径) filename=$(basename "$target_file") # 去掉 .jpg 后缀以便查找源文件 base_filename="${filename%.jpg}" # 检查源文件夹中是否存在同名文件 if [ -f "$SOURCE_DIR/$filename" ]; then # 使用 exiftool 复制 EXIF 信息 exiftool -overwrite_original -all= -UserComment= -tagsFromFile "$SOURCE_DIR/$filename" "$target_file" mv "$target_file" "$SUCCEED_DIR/" echo "jpg 匹配成功,已移动到 succeed 文件夹" # 检查源文件夹中是否存在同名的 HEIF 文件 elif [ -f "$SOURCE_DIR/$base_filename.heic" ]; then # 使用 exiftool 复制 EXIF 信息 exiftool -overwrite_original -tagsFromFile "$SOURCE_DIR/$base_filename.heic" "$target_file" mv "$target_file" "$SUCCEED_DIR/" echo "heic 匹配成功,已移动到 succeed 文件夹" elif [ -f "$SOURCE_DIR/$base_filename.heif" ]; then # 使用 exiftool 复制 EXIF 信息 exiftool -overwrite_original -tagsFromFile "$SOURCE_DIR/$base_filename.heif" "$target_file" mv "$target_file" "$SUCCEED_DIR/" echo "heif 匹配成功,已移动到 succeed 文件夹" elif [ -f "$SOURCE_DIR/$base_filename.HIF" ]; then # 使用 exiftool 复制 EXIF 信息 exiftool -overwrite_original -tagsFromFile "$SOURCE_DIR/$base_filename.HIF" "$target_file" mv "$target_file" "$SUCCEED_DIR/" echo "HIF 匹配成功,已移动到 succeed 文件夹" else echo "$filename 未找到,保留在原位置" fi done # 处理被修改的文件夹中的所有大写 JPG 文件 for target_file in "$TARGET_DIR"/*.JPG; do # 跳过 succeed 目录中的文件 if [[ "$target_file" == *"/succeed/"* ]]; then continue fi # 获取文件名(不包括路径) filename=$(basename "$target_file") # 执行 exiftool 命令去除 GPS 信息并设置作者,删除美图秀秀生成的备注信息 exiftool -overwrite_original -UserComment= -gps:all= -artist="奇趣保罗" -CreatorTool= "$target_file" done echo "EXIF 信息更新完成!"