Команда преобразования не соблюдает порядок
У меня есть определенное количество файлов PNG с именем 1.png, 2.pngи т.д. и нужно сделать анимацию с ними. я использую convert -delay 20 *.png animation.gif,
В первый раз, когда я его использовал, оказалось, что созданная анимация начиналась с 10, затем 11, затем 12, вплоть до 19, а затем до 2! Это логично, но я этого не хочу. Так что я сделал, чтобы изменить имена 01.png, 02.png,
Это было хорошо в начале. Теперь я хочу сделать gif с большим количеством изображений (тысяч), и проблема в том, что, когда он идет 10, например, он достигает 100! Я не могу изменять имена вручную, потому что все это является частью скрипта, и пользователь выбирает, сколько png он хочет. Итак, как решить?
1 ответ
Это не имеет ничего общего с convert команда - ваша оболочка расширяет шаблон глобуса *.png перед передачей в команду, и делает это в лексическом порядке сортировки LC_COLLATE определяется как часть тока системы locale,
К сожалению, трудно получить числовое упорядочение в оболочке bash (что, как я полагаю, вы используете): если вы не против переключиться на zsh есть возможность использовать числовой префикс
convert -delay 20 *.png(n) animation.gif
Для дальнейшего обсуждения, см., Например, этот связанный Q & A Glob с числовым порядком