cma*_*mal 29 terminal png image batch-processing
我有很多想用pngquant处理的图像.它们以非常深的目录结构组织,因此手动cd
进入每个目录并运行非常耗时pngquant -ext .png -force 256 *.png
有没有办法让这个命令在当前目录中的每个目录中的每个*.png上运行,因为需要多个深层?
Kor*_*nel 58
如果您的目录深度有限且文件太多,那么懒惰的解决方案:
pngquant *.png */*.png */*/*.png
Run Code Online (Sandbox Code Playgroud)
标准解决方案:
find . -name '*.png' -exec pngquant --ext .png --force 256 {} \;
Run Code Online (Sandbox Code Playgroud)
和多核版本:
find . -name '*.png' -print0 | xargs -0 -P8 -L1 pngquant --ext .png --force 256
Run Code Online (Sandbox Code Playgroud)
其中-P8
定义了CPU的数量,并-L1
定义了一个pngquant调用中要处理的图像数量(我-L4
用于具有大量小图像的文件夹,以便在进程启动时保存).
Den*_*nis 16
使用fish shell,您可以从项目目录的根目录运行以下命令
pngquant **.png
Run Code Online (Sandbox Code Playgroud)
这将生成扩展名为-or8.png
或的新文件-fs8.png
.
如果要覆盖现有文件,可以使用
pngquant **.png --ext .png --force
Run Code Online (Sandbox Code Playgroud)