0

我使用这个命令:

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

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

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

感谢

4

1 回答 1

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 '...'根据评论修复]

于 2018-06-05T14:02:17.553 回答