我之前使用 find 来查找文件夹和子文件夹中的所有特定文件并对其进行处理
例如,我确实使用了
find /folder/ -name '*.txt' -exec chmod 666 {} \;
此代码可轻松更改对文件夹中每个文本文件的写入权限。
现在我打算尝试以相同的方式将每个 jpg(甚至 JPG)转换为 gif,但不确定这是否那么容易。当我尝试使用转换命令工具时,它希望有一个输入文件名和输出文件名,但我认为 find 没有给出,所以也许 find 不是正确的工具使用?
我之前使用 find 来查找文件夹和子文件夹中的所有特定文件并对其进行处理
例如,我确实使用了
find /folder/ -name '*.txt' -exec chmod 666 {} \;
此代码可轻松更改对文件夹中每个文本文件的写入权限。
现在我打算尝试以相同的方式将每个 jpg(甚至 JPG)转换为 gif,但不确定这是否那么容易。当我尝试使用转换命令工具时,它希望有一个输入文件名和输出文件名,但我认为 find 没有给出,所以也许 find 不是正确的工具使用?
Find 可以用于此,但我发现使用 shell 更容易。如果您的文件都在同一个目录中(没有子目录),您可以这样做:
该语法将从变量末尾
${var%something}
删除 glob 的最短匹配项。例如:something
$var
所以在这里,它从文件名中删除了最后的扩展名。因此,
"${f%.*}.gif"
是原始文件名,但使用.gif
而不是.jpg
或.JPG
。如果确实需要递归到子目录,可以使用 bash 的
globstar
选项(从man bash
):您可以使用以下命令启用它
shopt -s globstar
:您确实可以将
find
- 与调用适当convert
命令并使用参数替换生成输出文件的 shell 包装器一起使用。前任。更改
-name
为-iname
包含.JPG
扩展名(尽管请注意,替换.gif
扩展名无论如何都是小写的)。ImageMagick 中还有另一个工具,
mogrify
旨在简化批处理。这可以满足您的要求: