Linux 如何对子文件夹中的所有图像使用ImageMagick convert命令

Linux 如何对子文件夹中的所有图像使用ImageMagick convert命令,linux,image,optimization,imagemagick,bulk,Linux,Image,Optimization,Imagemagick,Bulk,对于单个文件,我使用以下ImageMagick命令(如google): 用于png convert file.png -sampling-factor 4:2:0 -strip -quality 85 -interlace PNG -colorspace sRGB file.png convert file.jpg -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace sRGB file.jpg 适用于jp

对于单个文件,我使用以下ImageMagick命令(如google):

用于png

convert file.png -sampling-factor 4:2:0 -strip -quality 85 -interlace PNG -colorspace sRGB file.png
convert file.jpg -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace sRGB file.jpg
适用于jpg

convert file.png -sampling-factor 4:2:0 -strip -quality 85 -interlace PNG -colorspace sRGB file.png
convert file.jpg -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace sRGB file.jpg
但我需要对子文件夹中的all.jpg执行相同的操作

我试过这个:

find ./*.jpg | xargs convert $ -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace sRGB $
以及所有已压缩但使用第一个名称命名并添加索引的图像,例如:

/img/first-one-0.jpg  
/img/first-one-1.jpg  
/img/first-one-2.jpg  
/img/first-one-3.jpg  
...
我怎样才能批量覆盖原件?即使我们有多个子目录:

/img/dir-1/one.jpg  
...  
/img/dir-2/foo.jpg  
试试这个:

(1) 另存为
cvt.py

(2) 打开终端,运行python3 cvt.py your\u images\u root\u path


注意:下面的代码可能会修改您的图像,请先进行测试


如果要覆盖目录中的所有文件,请使用
mogrify

mogrify -sampling-factor 4:2:0 -strip -quality 85 -interlace PNG -colorspace sRGB *.png
如果要将结果写入名为“已处理的<代码>新子目录”:

mkdir processed
mogrify -path processed ...

如果您使用的是ImageMagickv7或更高版本,则会变成:

mkdir processed
magick mogrify -path processed ...

浏览目录,并执行命令行。我更喜欢使用Python。@因为我使用的是linux,没有太多使用命令行的经验请原谅我的无知。我想我必须把它放到一个文件里。它应该有什么扩展,我应该如何执行它?感谢您收到此错误:“回溯(最近一次调用):文件“cvt.py”,第31行,在root_path=sys.argv[1]name错误:名称“sys”未定义“任何想法?抱歉,我忘记添加
import sys
,请查看我的更新。我添加了它,现在不会触发任何错误,但我没有再次看到任何带有调试信息的文件更改/createdUpdate。尝试查看任何输出信息?我将最后一位更改为
*/*.png
,以便它处理子文件夹中的所有图像(一个级别)