Скрипт для пакетной обработки файлов в последовательности
Мне нужна помощь в написании сценария 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 ++ }"