使用pngquant递归批处理文件

时间:2012-03-10 16:11:01

标签: image terminal png batch-processing

我有很多想用pngquant处理的图像。它们以非常深入的目录结构进行组织,因此将cd手动pngquant -ext .png -force 256 *.png到每个目录并运行{{1}}

非常耗时

有没有办法让这个命令在当前目录中的每个目录中的每个* .png上运行,根据需要深入多层?

2 个答案:

答案 0 :(得分:53)

如果您的目录深度有限且文件太多,那么懒惰的解决方案:

pngquant *.png */*.png */*/*.png

标准解决方案:

find . -name '*.png' -exec pngquant --ext .png --force 256 {} \;

和多核版本:

find . -name '*.png' -print0 | xargs -0 -P8 -L1 pngquant --ext .png --force 256

其中-P8定义了CPU的数量,而-L1定义了一个pngquant调用中要处理的图像数量(我使用-L4来保存具有大量小图像的文件夹过程开始)。

答案 1 :(得分:15)

使用fish shell,您可以从项目目录的根目录

运行以下命令
pngquant **.png

这会生成包含-or8.png-fs8.png等扩展名的新文件。

如果要覆盖现有文件,可以使用

pngquant **.png --ext .png --force