Как работать с многопоточностью jpegoptim, и пропустить сбои - PullRequest
0 голосов
/ 05 июня 2018

Я использую эту команду:

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

Но на некоторых изображениях происходит сбой (jpegoptim получает SEGFAULT) и происходит сбой xargs, а также сбой всех процессов.

Как пропустить сбои и продолжитьзадание?

Спасибо

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете обернуть его в скриптлет, например:

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

, обратите внимание, что выше не будет обрабатывать некоторые смешно названные файлы (например, с " в нем).

[обновление: исправлено для sh -c '...' согласно комментариям]

...