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

时间:2018-06-05 13:38:39

标签: segmentation-fault find sh xargs jpegoptim

我使用这个命令:

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

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

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

感谢

1 个答案:

答案 0 :(得分:0)

您可以将其包装在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 '...'修复]