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