2015-03-04 1 views
2

Я пытаюсь, чтобы этот фрагмент кода изменял размер jpg-файлов внутри папки, рекурсивно превышающей 1 МБ.Strange errror при использовании find в пакетном скрипте

find . -type f -size +1M -name "*.jpg" | xargs convert -resize 1000x1000\> -verbose 

Получение сообщение об ошибке (которое разрывает партию через 15-20 итераций)

xargs: convert: terminated by signal 9 

Как решить эту проблему?

+0

Это будет передавать несколько имен файлов в 'convert', которые, я думаю, не будут корректно обрабатываться. Вы уверены, что это делает то, что вы хотите, а не топаете над хорошим куском ваших исходных файлов? –

ответ

2

xargs из моего опыта не работает хорошо во всех случаях, так же, как предложение, попробуйте использовать -exec, если вам нужно быстрое решение проблемы

find . -type f -size +1M -name "*.jpg" -exec convert {} -resize 1000x1000\> -verbose {} \; 

Смотрите, если это будет полезно для вы

0

xargs не работает должным образом, если у вас есть файлы с пробелами в имени. Для того, чтобы это выдержать шанс работать, вы должны использовать следующий синтаксис:

find . -type f -size +1M -name "*.jpg" -print0 | xargs -0 convert -resize 1000x1000\> -verbose 

Это будет вставлять нулевые символы в качестве разделителей вместо использования пробелов в качестве разделителей.