【问题标题】:How do I run a command on all files in a folder (which has sub-folders) using ExifTool?如何使用 ExifTool 对文件夹(具有子文件夹)中的所有文件运行命令?
【发布时间】:2016-10-29 06:57:15
【问题描述】:

我有一个名为照片和视频的文件夹。
它有不同年份的文件夹,我有照片和视频。
年文件夹有月份的文件夹,月份文件夹有那个月的文件夹。
days 文件夹包含我所有的图像和视频文件。

现在,我想使用一个 exiftool 命令对所有这些文件运行命令。

例如,要删除文件夹中所有文件的元数据,我会在每一天的文件夹上一次运行一个此类命令。

exiftool -all= -overwrite_original Documents/Personal/Photos\ \&\ Videos/2015/3-2015/7-3-2015/ .

问题是我的文件夹太多了。
那么,有没有一种方法可以使用一个命令同时定位“照片和视频”文件夹中的所有文件。

请帮忙

【问题讨论】:

    标签: bash macos shell terminal exiftool


    【解决方案1】:

    -r 添加到您的命令中。 -r 将回避到所有子目录中。

    【讨论】:

    • 我是 shell 脚本的菜鸟。你能告诉我我在命令中的确切位置 -r 吗?
    • Exiftool 对于放置选项命令的位置非常灵活。但为了简单起见,请将其放在开头附近,文件路径之前的某个位置,例如exiftool -r -all= -overwrite_original
    • 添加 -r 似乎不适用于指定的文件夹。相反,它开始从其他文件夹中的其他文件中剥离元数据。我在桌面上的一个测试文件夹上使用了这个命令,该文件夹有三个子文件夹。 exiftool -r -all= -overwrite_original Desktop/test/ .
    • 您的命令中是否包含点?点表示当前目录,因此在您上面发布的命令中,它将尝试处理两个目录。不幸的是,我对 osx 了解不多,但我相信您可以将文件夹拖到终端上以获取正确的路径。因此,键入或粘贴命令,添加一个空格,然后将文件夹拖到终端窗口上。除非您确实要处理当前目录,否则不要添加点。
    • 糟糕!我的错。我已经删除了这个点,它现在就像一个魅力:D 非常感谢:D
    【解决方案2】:

    适用于所有命令的更通用的解决方案是使用find

    find Documents/Personal/Photos\ \&\ Videos/2015/3-2015/7-3-2015/ -type f 将打印出Documents/Personal/Photos & Videos/2015/3-2015/7-3-2015 中的每个文件。要对这些文件中的每一个运行命令,您可以使用 -exec 参数,语法很奇怪:

    find Documents/Personal/Photos\ \&\ Videos/2015/3-2015/7-3-2015/ -type f -exec exiftool -all= -overwrite_original '{}' \;
    

    【讨论】:

    • 谢谢!我已经在我的工作流程中集成了接受的答案。但是,我也会试试你的建议:)
    • 虽然这可能是某些程序唯一要做的事情,但这不是您想用 exiftool 做的事情,而且由于 exiftool 的灵活性,很少需要这样做。启动是 exiftool 最大的性能损失之一,在每个文件上单独循环和运行它可以显着增加运行时间。见Improving Performance
    • 谢谢,知道这很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2017-04-04
    • 1970-01-01
    • 2014-12-22
    • 2018-04-07
    • 2012-07-26
    相关资源
    最近更新 更多