与可变部分匹配的模式,在不同的文件名中是相同的

时间:2015-10-18 19:12:34

标签: windows batch-file cmd imagemagick imagemagick-convert

我在一个目录中有很多文件:world_map_1.pngworld_map_2.pngworld_country_1.pngworld_country_2.png,...

我想使用ImageMagick将world_map_2.png追加到world_map_1.png并将输出存储在world_map.png中。我想对所有以world开头并以12结尾的文件执行此操作,因此我的方法是:

convert world_*_1.png world_*_2.png +append world_*.png

问题是*所有3个名称中的*必须相同,所以我需要一种变量,我可以在第2和第3名称中重复使用。

1 个答案:

答案 0 :(得分:1)

我使用命令来检测uniq“infixes”:

for image in world_*_*.png
do 
    tmp="${image/world_/}"
    echo "${tmp/_*/}"
done | sort -u

然后,循环遍历

for token in $(for a in world_*_*.png; do tmp="${a/world_/}"; echo "${tmp/_*/}"; done | sort -u)
do 
    convert "world_$token"_*.png +append "world_$token.png"
done

创建一些假图像文件:

touch world_{map,country,something,else}_{01..04}.png

该命令运行以下所有行:

convert world_country_01.png world_country_02.png world_country_03.png world_country_04.png +append world_country.png
convert world_else_01.png world_else_02.png world_else_03.png world_else_04.png +append world_else.png
convert world_map_01.png world_map_02.png world_map_03.png world_map_04.png +append world_map.png
convert world_something_01.png world_something_02.png world_something_03.png world_something_04.png +append world_something.png