可变部分模式匹配,不同文件名相同
Patternmatching with variable part, which is the same in different filenames
我在一个名为:world_map_1.png
、world_map_2.png
、world_country_1.png
、world_country_2.png
、...
的目录中有很多文件
我想使用 ImageMagick 将 world_map_2.png
附加到 world_map_1.png
并将输出存储在 world_map.png
中。我想对所有以 world
开头并以 1
和 2
结尾的文件执行此操作,所以我的方法是:
convert world_*_1.png world_*_2.png +append world_*.png
问题是 * 在所有 3 个名称中必须相同,因此我需要一种变量,我可以在第二个和第三个名称中重复使用它。
我会使用命令来检测 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
我在一个名为:world_map_1.png
、world_map_2.png
、world_country_1.png
、world_country_2.png
、...
我想使用 ImageMagick 将 world_map_2.png
附加到 world_map_1.png
并将输出存储在 world_map.png
中。我想对所有以 world
开头并以 1
和 2
结尾的文件执行此操作,所以我的方法是:
convert world_*_1.png world_*_2.png +append world_*.png
问题是 * 在所有 3 个名称中必须相同,因此我需要一种变量,我可以在第二个和第三个名称中重复使用它。
我会使用命令来检测 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