Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用ExifTool对文件夹(包含子文件夹)中的所有文件运行命令?_Bash_Macos_Shell_Terminal_Exiftool - Fatal编程技术网

Bash 如何使用ExifTool对文件夹(包含子文件夹)中的所有文件运行命令?

Bash 如何使用ExifTool对文件夹(包含子文件夹)中的所有文件运行命令?,bash,macos,shell,terminal,exiftool,Bash,Macos,Shell,Terminal,Exiftool,我有一个名为照片和视频的文件夹 它有我拥有照片和视频的不同年份的文件夹。 “年份”文件夹包含月份文件夹,“月份”文件夹包含当月天数文件夹。 days文件夹包含我的所有图像和视频文件 现在,我想使用一个exiftool命令在所有这些文件上运行命令 例如,要删除文件夹中所有文件的元数据,我将在每天的文件夹中一次运行一个命令 exiftool -all= -overwrite_original Documents/Personal/Photos\ \&\ Videos/2015/3-2015/

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

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

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

exiftool -all= -overwrite_original Documents/Personal/Photos\ \&\ Videos/2015/3-2015/7-3-2015/ .
问题是我的文件夹天数太多。
那么,是否有一种方法可以使用一个命令同时将照片和视频文件夹中的所有文件作为目标


请帮助将
-r
添加到您的命令中
-r
将重复出现在所有子目录中。

-r
添加到您的命令中
-r
将重复出现在所有子目录中。

适用于所有命令的更通用的解决方案是使用
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 '{}' \;

适用于所有命令的更通用的解决方案是使用
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 '{}' \;

我是shell脚本编写的noob。你能告诉我把-r放在命令的什么地方吗?Exiftool对于把选项命令放在哪里非常灵活。但为了保持简单,请将其放在靠近开始的位置,文件路径之前的某个位置,例如,
exiftool-r-all=-overwrite\u original
Adding-r在指定的文件夹中似乎不起作用。相反,它开始从其他文件夹中的其他文件中剥离元数据。我在桌面上有三个子文件夹的测试文件夹上使用了这个命令
exiftool-r-all=-overwrite_original Desktop/test/
是否在命令中包含点?点表示当前目录,因此在上面发布的命令中,它将尝试处理两个目录。不幸的是,我对osx了解不多,但我相信您可以将文件夹拖到终端上以获得正确的路径。因此,键入或粘贴命令,添加一个空格,然后将文件夹拖到终端窗口上。除非你真的想处理当前目录,否则不要添加点。哎呀!是我的错。我已经删除了这个点,现在它就像一个符咒:D非常感谢:我是shell脚本的noob。你能告诉我把-r放在命令的什么地方吗?Exiftool对于把选项命令放在哪里非常灵活。但为了保持简单,请将其放在靠近开始的位置,文件路径之前的某个位置,例如,
exiftool-r-all=-overwrite\u original
Adding-r在指定的文件夹中似乎不起作用。相反,它开始从其他文件夹中的其他文件中剥离元数据。我在桌面上有三个子文件夹的测试文件夹上使用了这个命令
exiftool-r-all=-overwrite_original Desktop/test/
是否在命令中包含点?点表示当前目录,因此在上面发布的命令中,它将尝试处理两个目录。不幸的是,我对osx了解不多,但我相信您可以将文件夹拖到终端上以获得正确的路径。因此,键入或粘贴命令,添加一个空格,然后将文件夹拖到终端窗口上。除非你真的想处理当前目录,否则不要添加点。哎呀!是我的错。我已经去掉了圆点,现在它就像一个符咒:D非常感谢:D谢谢!我已经在我的工作流程中集成了接受的答案。但是,我也会尝试一下你的建议:)虽然这可能是某些程序唯一要做的事情,但这不是你想用exiftool做的事情,而且由于exiftool的灵活性,很少需要这样做。Startup是exiftool最大的性能影响之一,在每个文件上循环并单独运行它可以显著增加运行时间。看。谢谢,知道这个很有用。谢谢你!我已经在我的工作流程中集成了接受的答案。但是,我也会尝试一下你的建议:)虽然这可能是某些程序唯一要做的事情,但这不是你想用exiftool做的事情,而且由于exiftool的灵活性,很少需要这样做。Startup是exiftool最大的性能影响之一,在每个文件上循环并单独运行它可以显著增加运行时间。看,谢谢,知道这个很有用。