如何在Mac Shell中批量将同名XMP数据写入JPEG文件?
批量将XMP元数据导入同名JPEG文件(Mac Shell环境)
优先推荐:ExifTool原生批量处理(无需循环)
ExifTool本身就支持批量匹配同名文件,不需要额外写Shell循环,这是最优雅高效的方式:
exiftool -tagsfromfile %d%f.xmp -all:all *.jpg
参数说明:
%d:保留当前文件的目录路径(确保子目录下的文件也能正确匹配同名XMP)%f:提取当前JPEG文件的文件名(不含后缀)- 结合起来
%d%f.xmp就会自动匹配与当前JPEG同名的XMP文件
如果需要递归处理子目录里的文件,加上-r参数即可:
exiftool -r -tagsfromfile %d%f.xmp -all:all *.jpg
备选:Shell For循环实现
如果偏好手动写循环,也可以用Bash遍历所有JPEG文件,替换后缀匹配XMP:
for jpg_file in *.jpg; do xmp_file="${jpg_file%.jpg}.xmp" # 可选:检查XMP文件是否存在,避免报错 if [ -f "$xmp_file" ]; then exiftool -tagsfromfile "$xmp_file" -all:all "$jpg_file" fi done
这里${jpg_file%.jpg}是Bash的参数替换语法,作用是去掉文件名末尾的.jpg后缀,再拼接.xmp得到对应的XMP文件名。加上if [ -f "$xmp_file" ]; then可以跳过没有对应XMP的JPEG,避免不必要的错误输出。
内容的提问来源于stack exchange,提问作者pcace
相关产品推荐
相关产品推荐

