对一对文件执行命令

对一对文件执行命令

**背景:**我扫描了很多旧照片,背面都有文字。

使用 imagemagick,我可以像这样附加图片的正面和背面:

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

我的问题是我有很多图片需要应用该命令。

有没有办法让 bash 对每个奇数文件应用“montage”,并自动添加其后的文件名?输出文件名也是一个问题。

答案1

快速而肮脏:

#!/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

相关内容