如何在 shell 脚本中使用 exiftool?

How can I use exiftool inside shel script?

我在 MacOS Catalina 10.15.3

我正在使用 zsh

我想创建一个 Atomator 应用程序,它可以为我从文件中删除元数据。 Atomator 应用程序的工作方式是,我将文件拖放到应用程序上,然后应用程序启动一个 shellscript,并将文件路径作为输入。

我正在使用 exiftools 删除元数据。

我首先测试了如果我在终端中使用 exiftools 是否有效:

而且有效。

但是当我在我的 Automator 应用程序中的 shellscript 中使用 exiftool 时,它说它没有找到命令 "exiftools".

这是我的 Automator 工作流程:

和自动化 运行 这个 Shellscript:

for f in "$@"
do
    echo "$f"
done

xattr -c "$f"

exiftool -all= "$f"

rm -r "$f"_original

我测试了一下,文件路径正确地存储在$f变量中。

但由于某些原因,Automation 中的 shellscript 无法使用 exiftool。

而错误信息中的第二个错误并不重要,因为exiftool命令没有出现它运行.

这是自动化应用程序的错误消息:

------------------------

非常感谢

我通过将 exiftools 移动到我的主目录中的文件夹解决了这个问题。 然后我让 shellscript 移动到这个目录并使用 . /

我的 shellscript 现在看起来像这样:

for f in "$@"
do
    echo "$f"
done

cd /Users/niklas/Programming/Tools/ExifTool/

./exiftool -all= "$f"

rm -r "$f"_original

exit

"solution" 脚本有几个问题。首先,它不适用于多个文件(即 select Finder 中的多个文件,然后将它们全部拖到应用程序中)。它遍历文件,回显每个路径,但最后一个路径上只有 运行s exiftool。要使它们全部 运行,请将对文件 进行操作的命令放在 循环 中,而不是在它之后(并删除 echo -- 它只是示例代码中的一个占位符)。

其次,它不做任何错误检查;如果其中一个命令出现问题,它会愉快地继续,也许在错误的目录中,也许谁知道呢。您可以使用 && 加入命令,只有当第一个命令成功时,它才会 运行 第二个命令。

第三,cd在脚本中四处走动会导致脚本混乱,因为它改变了相对路径的含义(这里应该不是问题,但通常是一种不好的做法)。如果您需要引用不同目录中的文件(如 exiftool 可执行文件),通过路径指定其位置比先 cd 更安全。

这是我编写脚本的方式:

for f in "$@"
do
    /Users/niklas/Programming/Tools/ExifTool/exiftool -all= "$f" &&
        rm -r "$f_original"
done