如何使用 jpegoptim 多线程,跳过失败

How to work with jpegoptim multithread, and skip fails

我使用这个命令:

find . \( -iname '*.jpg' -o -iname '*.jpeg' \) -print0 | xargs -0 -n 1 -P 4 jpegoptim --max=70 -s

但它在某些图像上失败(jpegoptim 收到 SEGFAULT)并使 xargs 崩溃,所有进程都失败。

如何跳过失败,继续任务?

感谢

您可以将其包装在一个 scriptlet 中,例如:

find . \( -iname '*.jpg' -o -iname '*.jpeg' \) -print0 | \
  xargs -I@ -0 -n 1 -P 4 sh -c 'jpegoptim --max=70 -s "@" || exit 0'

,请注意上面不会处理一些有趣命名的文件(例如其中包含 ")。

[更新:根据评论修复了 sh -c '...']