![对一对文件执行命令](https://linux22.com/image/1220886/%E5%AF%B9%E4%B8%80%E5%AF%B9%E6%96%87%E4%BB%B6%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4.png)
**背景:**我扫描了很多旧照片,背面都有文字。
使用 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