JPG 批量压缩和重命名(查找 -exec、xargs、管道?)

Hur*_*ria 3 command-line find convert-command

这是我的第一篇文章,所以如果我犯了一些格式错误,我希望你能原谅我。这是我已经有很长一段时间的一个问题,在寻找答案时,我出现了更多问题。我试图找到一种方法来使用convert一个命令压缩文件夹中的图片。

首先,我只是尝试:

convert * -resize 50% Pic.jpg
Run Code Online (Sandbox Code Playgroud)

然而,这返回了名为 Pic-0.jpg、Pic-1.jpg 等的压缩图片(我也尝试过$(find ".JPG")而不是,*但将其扩展为相同的。为了获得我想要的格式,我尝试了:

convert * -resize 50% Pic_lorez_{1..3}.jpg
Run Code Online (Sandbox Code Playgroud)

但这似乎将 Pic_lorez_2.jpg 和 Pic3_lorez_3.jpg 作为输入文件,而不是输出文件。所以听从了朋友的建议,我尝试了:

find . -name "*.JPG" -exec convert {} -resize 50% {} \;
Run Code Online (Sandbox Code Playgroud)

这会压缩同名下的所有文件,但不允许将我想要的名称放在这些文件中(例如,Pic_lorez_{1,2,3,4,5,..100}.jpg)。

xargs 会让它成为可能吗?类似的东西:

find . -name "*.JPG" | xargs convert ???
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚 xargs 的正确语法。我终于尝试了将 find 的直接管道转换为 convert 但 convert 似乎无法以这种方式工作。

Nyk*_*kin 8

convert写入不同的图像文件。要覆盖原始图像文件,请使用mogrify.

单个文件:

mogrify -resize 50% Pic.jpg 
Run Code Online (Sandbox Code Playgroud)

所有.jpg文件:

mogrify -resize 50% *.jpg
Run Code Online (Sandbox Code Playgroud)