fix: 存档记录一下旧版本而已,现在删了

This commit is contained in:
2026-09-10 14:01:49 +08:00
parent 427c92b9ec
commit ac0b12d154
-91
View File
@@ -1,91 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# 使用:convert_and_copy_exif.sh /path/to/source_dir [target_dir]
# SOURCE_DIR 必填:包含原始带 EXIF 的原图的文件夹
# TARGET_DIR 可选:要处理的文件夹(默认当前目录)
if [[ "${1:-}" == "" ]]; then
echo "Usage: $0 /path/to/source_dir [target_dir]" >&2
exit 2
fi
SOURCE_DIR="$1"
TARGET_DIR="${2:-.}"
# 依赖检查
if ! command -v exiftool >/dev/null 2>&1; then
echo "exiftool not found. Please install exiftool." >&2
exit 3
fi
# prefer magick if available (ImageMagick v7), otherwise use convert
if command -v magick >/dev/null 2>&1; then
IM_CONVERT="magick"
elif command -v convert >/dev/null 2>&1; then
IM_CONVERT="convert"
else
echo "ImageMagick (magick or convert) not found. Please install it." >&2
exit 4
fi
# 处理扩展名列表(大小写无关)
shopt -s nullglob
mapfile -t files < <(find "$TARGET_DIR" -maxdepth 1 -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.webp" -o -iname "*.heic" -o -iname "*.tif" -o -iname "*.tiff" -o -iname "*.bmp" -o -iname "*.gif" \) -print0 | xargs -0 -I{} printf '%s\n' "{}")
if [[ ${#files[@]} -eq 0 ]]; then
echo "No image files found in target directory: $TARGET_DIR"
exit 0
fi
for srcpath in "${files[@]}"; do
# 生成目标 jpg 文件路径(放在同一目录,保留原文件不覆盖)
dir=$(dirname -- "$srcpath")
base=$(basename -- "$srcpath")
name_noext="${base%.*}"
target_jpg="$dir/${name_noext}.jpg"
# 如果源本身就是 .jpg/.jpeg,则将 target_jpg 指向原文件(不重复转码)
ext="${base##*.}"
lower_ext="${ext,,}"
if [[ "$lower_ext" == "jpg" || "$lower_ext" == "jpeg" ]]; then
target_jpg="$srcpath"
echo "Skipping convert (already jpg): $srcpath"
else
# 转码为 jpg(如果目标存在则跳过转码)
if [[ -f "$target_jpg" ]]; then
echo "Target JPG already exists, skipping convert: $target_jpg"
else
echo "Converting: $srcpath -> $target_jpg"
# -strip 在这里不使用,因为后面要用 exiftool 覆盖;保留像素信息
"$IM_CONVERT" "$srcpath" -quality 95 "$target_jpg"
if [[ $? -ne 0 ]]; then
echo "Convert failed for $srcpath" >&2
continue
fi
fi
fi
# 在 SOURCE_DIR 中查找同名原图(任意扩展名),优先返回第一个匹配
found_src=""
while IFS= read -r -d $'\0' cand; do
found_src="$cand"
break
done < <(find "$SOURCE_DIR" -type f -iname "${name_noext}.*" -print0)
if [[ -z "$found_src" ]]; then
echo "No matching source with same name in $SOURCE_DIR for: $name_noext" >&2
continue
fi
# 使用 exiftool 按提供的命令模板:先清掉再从 found_src 拷贝所有标签,设置 Artist 和 清空 UserComment,Orientation Normal
echo "Copying EXIF from $found_src -> $target_jpg"
exiftool -overwrite_original -all= -tagsFromFile "$found_src" "-all:all>all:all" -Artist="Paul" -UserComment= -Orientation=Normal "$target_jpg" >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "EXIF copied: $target_jpg"
else
echo "Failed to copy EXIF for $target_jpg" >&2
fi
done
echo "Done."