如何使用 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 '...'
]
我使用这个命令:
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 '...'
]