2

基本上我想要做的是递归搜索工作目录,然后使用给定的路径来调整图像的大小。例如,查找所有 *.jpg 文件,将它们调整为 300x300 并重命名为whatever.jpg。

我应该做一些事情$(find | grep *.jpg)来获得路径吗?当我这样做时,输出是没有用引号括起来的目录,这意味着我必须先插入它们才能有用,对吧?

4

2 回答 2

6

我将mogrifyfind一起使用。

可以说,我需要嵌套文件夹/另一个/文件夹/*.jpg 中的所有内容都在*.png

find . -name "*.jpg" -print0|xargs -I{} -0 mogrify -format png {}

&& 有一点解释:

find . -name *.jpeg-- 查找嵌套文件夹中的所有 jpeg。
-print0-- 打印所需的文件名而不会有令人讨厌的惊喜(例如:文件名空格分隔) -- 使用mogrify
xargs -I {} -0一个一个地处理文件

最后那些 {}只是查找结果的虚拟文件名。

于 2014-11-19T10:46:14.410 回答
1

你可以在 GNU find 中使用类似的东西:

find . -iname \*jpg -exec /your/image/conversion/script.sh {} +

这在引用方面会更安全,并产生更少的进​​程。只要您的脚本可以处理参数列表的长度,此解决方案应该是最有效的选择。

如果您需要处理非常长的文件列表,您可能需要付出代价并产生更多进程。您可以修改 find 以分别处理每个文件。例如:

find . -iname \*jpg -exec /your/image/conversion/script.sh {} \;
于 2012-07-15T18:19:03.027 回答