如果我需要这个,谁能给我指个路第一个月为了工作数百个jpgs?所以我有一个foldeder与数百个jpegs和xmps具有相同的名称,但不同的文件结束(xmp和jpeg).什么将是优雅的方式来通过所有这些,并取代XYZ与实际的文件名?我想/需要在osx上的shell中执行此操作。是否需要像for循环这样的东西?或者在shell中是否有任何直接的方法?提前感谢你!!
aelbi1ox1#
你的命令是
exiftool -r --ext xmp -tagsfromfile %d%f.xmp -all:all /path/to/files/
请参见元数据Sidecar文件示例#15。-r(-recurse)选项允许递归到子目录。如果不需要递归,请删除该选项。-ext(-extension)选项用于防止从XMP文件复制回XMP文件本身。%d变量是当前正在处理的文件的目录。%f变量是没有该文件扩展名的基本文件名。然后xmp被用作扩展名。结果为找到的每个图像文件创建一个到同一目录中相应XMP文件的文件路径。这将适用于找到的任何可写文件(参见FAQ #16)。此命令创建备份文件。添加-overwrite_original可禁止创建备份文件。你不想像其他答案中所示的那样循环exiftool。Exiftool最大的性能损失是启动时间,循环它将增加处理时间。这是Exiftool常见错误#3。
-r
-recurse
-ext
-extension
%d
%f
xmp
-overwrite_original
xpcnnkqh2#
通过以下方式解决了这个问题:
#!/bin/bash FILES="$1/*.jpg" for f in $FILES; do if [ -f "$f" ]; then echo "Processing $f file..." #cat "$f" FILENAME="${f%%.*}" echo $FILENAME # exiftool -tagsfromfile "$FILENAME".xmp -all:all "$FILENAME".jpg exiftool -overwrite_original_in_place -ext jpg -tagsFromFile "$FILENAME".xmp -@ xmp2exif.args -@ xmp2iptc.args '-all:all' '-FileCreateDate<XMP-photoshop:DateCreated' '-FileModifyDate<XMP-photoshop:DateCreated' "$FILENAME".jpg else echo "Warning: Some problem with \"$f\"" fi done
fwzugrvs3#
恕我直言,一个优雅而简单的方法是使用GNU Parallel来并行执行所有这些操作:
parallel --dry-run exiftool -tagsfromfile {.}.xmp -all:all {} ::: *.jpg
如果看起来正确,请删除--dry-run并再次运行以真实的执行此操作。{}仅表示“当前文件”{.}仅表示 “不带扩展名的当前文件”:::只是一个分隔符,后跟您希望GNU Parallel处理的文件的名称您可以使用自制程序在macOS上安装GNU Parallel:
--dry-run
{}
{.}
:::
brew install parallel
3条答案
按热度按时间aelbi1ox1#
你的命令是
请参见元数据Sidecar文件示例#15。
-r
(-recurse
)选项允许递归到子目录。如果不需要递归,请删除该选项。-ext
(-extension
)选项用于防止从XMP文件复制回XMP文件本身。%d
变量是当前正在处理的文件的目录。%f
变量是没有该文件扩展名的基本文件名。然后xmp
被用作扩展名。结果为找到的每个图像文件创建一个到同一目录中相应XMP文件的文件路径。这将适用于找到的任何可写文件(参见FAQ #16)。此命令创建备份文件。添加
-overwrite_original
可禁止创建备份文件。你不想像其他答案中所示的那样循环exiftool。Exiftool最大的性能损失是启动时间,循环它将增加处理时间。这是Exiftool常见错误#3。
xpcnnkqh2#
通过以下方式解决了这个问题:
fwzugrvs3#
恕我直言,一个优雅而简单的方法是使用GNU Parallel来并行执行所有这些操作:
如果看起来正确,请删除
--dry-run
并再次运行以真实的执行此操作。{}
仅表示“当前文件”{.}
仅表示 “不带扩展名的当前文件”:::
只是一个分隔符,后跟您希望GNU Parallel处理的文件的名称您可以使用自制程序在macOS上安装GNU Parallel: