Скрипт для пакетной обработки файлов в последовательности

Мне нужна помощь в написании сценария bash для вызова программы командной строки для выполнения пакетной обработки. Я хочу вызвать программу командной строки enfuse, которая объединяет несколько изображений различной экспозиции в одно изображение.

Enfuse вызывается, набрав это в терминале:

enfuse [options] [input files]

Если я хочу объединить, скажем, 2 изображения (0000.jpg и 0001.jpg) вместе с выходным файлом A0001.jpg, я бы набрал

enfuse -o A0001.jpg 0000.jpg 0001.jpg

Однако это не то, что я хочу сделать. У меня есть папка с изображениями, в которой изображения названы последовательно (скажем, 0000.jpg, 0001.jpg...1000.jpg), где я хочу добавить несколько скобок изображений, и каждая скобка состоит из 2 изображений (0001.jpg & 0002.jpg будет первой скобкой, а 0003.jpg и 0004.jpg будут второй скобкой и т. д.)

Как я могу написать скрипт, который вызывает enfuse для запуска всех моих изображений, по 2 изображения за раз, с последовательными именами вывода (A0001.jpg, A0002.jpg...)? Enfuse может работать с подстановочными знаками в качестве входных файлов, но я не хочу, чтобы вся папка была объединена в одно изображение, поэтому я не могу просто вставить *.jpg в качестве входных файлов.

2 ответа

Решение

Вы можете попробовать что-то вроде этого:

for i in {0000..1100}; do enfuse -o A$i.jpg $(( 10#$i*2 )).jpg $(( 10#$i*2 +1 )).jpg; done

Я бы использовал скрипт для создания скрипта из списка пар имен файлов, например:

ls * jpg | awk 'BEGIN {n = 1} {a = z; b = $ 1; if (n == 2) {print "enfuse -o A" b "" a "" b; n = 0;} z = b; n ++ }"

Другие вопросы по тегам