我有很多想用pngquant处理的图像。它们以非常深入的目录结构进行组织,因此将cd
手动pngquant -ext .png -force 256 *.png
到每个目录并运行{{1}}
有没有办法让这个命令在当前目录中的每个目录中的每个* .png上运行,根据需要深入多层?
答案 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