基本上我想要做的是递归搜索工作目录,然后使用给定的路径来调整图像的大小。例如,查找所有 *.jpg 文件,将它们调整为 300x300 并重命名为whatever.jpg。
我应该做一些事情$(find | grep *.jpg)
来获得路径吗?当我这样做时,输出是没有用引号括起来的目录,这意味着我必须先插入它们才能有用,对吧?
我将mogrify与find一起使用。
可以说,我需要嵌套文件夹/另一个/文件夹/*.jpg 中的所有内容都在*.png
find . -name "*.jpg" -print0|xargs -I{} -0 mogrify -format png {}
&& 有一点解释:
find . -name *.jpeg
-- 查找嵌套文件夹中的所有 jpeg。
-print0
-- 打印所需的文件名而不会有令人讨厌的惊喜(例如:文件名空格分隔) -- 使用mogrify
xargs -I {} -0
一个一个地处理文件
最后那些 {}只是查找结果的虚拟文件名。
你可以在 GNU find 中使用类似的东西:
find . -iname \*jpg -exec /your/image/conversion/script.sh {} +
这在引用方面会更安全,并产生更少的进程。只要您的脚本可以处理参数列表的长度,此解决方案应该是最有效的选择。
如果您需要处理非常长的文件列表,您可能需要付出代价并产生更多进程。您可以修改 find 以分别处理每个文件。例如:
find . -iname \*jpg -exec /your/image/conversion/script.sh {} \;