1

** Контекст:** Я отсканировал много старых картинок с надписью на обороте.

Используя imagemagick, я могу добавить переднюю и заднюю часть изображения следующим образом:

montage out20.jpg out21.jpg -gravity center -geometry +1+1 -tile 1x2 out2021.jpg; rm out20.jpg out21.jpg;
#(vertical append)

Моя проблема в том, что у меня много картинок для применения команды.

Есть ли способ попросить bash применить "монтаж" к каждому нечетному файлу, автоматически добавляя имя файла, которое идет после него? Выходное имя файла также является проблемой.

1 ответ1

4

Быстро и грязно:

#!/bin/bash
ls *.jpg | while read file
do
  number=`echo $file | tr -dc 0-9`;
  if [ $((number % 2)) -eq 0 ]; then
    nextnumber=`echo $number + 1 | bc`;
    nextfile=`echo $file | sed s/$number/$nextnumber/`;
    outfile=`echo $file | sed s/$number/$number$nextnumber/`;
    montage $file $nextfile -gravity center -geometry +1+1 -tile 1x2 $outfile
  fi
done

Вы сказали применить монтаж к нечетным файлам, но предоставили даже в своем примере. Код выше будет работать даже для. Если вам нужны сначала нечетные файлы, просто измените эту строку:

if [ $((number % 2)) -eq 0 ]; then

быть этим:

if [ $((number % 2)) -eq 1 ]; then

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .