imagemagick蒙太奇:使用部分文件名标记图像

imagemagick蒙太奇:使用部分文件名标记图像,imagemagick,bash,Imagemagick,Bash,我想蒙太奇多个文件的名称如下: 1235_9123a46d52ecb2de.png 123_6a51ef8968c64b94.png 1269_a7059318d47dbc01.png 12_45fb8c628863d77a.png 1347_04355d15f39e1e06.png 1349_bcbad21a686712d1.png 1368_229b9d3f692fdd61.png 1369_f69c36e04ba37bcb.png 137_ec3571cde47f7b8a.png ...

我想蒙太奇多个文件的名称如下:

1235_9123a46d52ecb2de.png
123_6a51ef8968c64b94.png
1269_a7059318d47dbc01.png
12_45fb8c628863d77a.png
1347_04355d15f39e1e06.png
1349_bcbad21a686712d1.png
1368_229b9d3f692fdd61.png
1369_f69c36e04ba37bcb.png
137_ec3571cde47f7b8a.png
...
我想在每个图像的下划线
之前只标记部分文件名

如果我使用以下命令
montage-标签%t*显示:

然后显示整个文件名,相当长。是否有可能以某种方式从文件名中提取子字符串?

子字符串操作不受
蒙太奇
实用程序的支持,但对于您的操作来说,这将是理想的

#/bin/bash
SOURCES=“1235_9123a46d52ecb2de.png 123_6a51ef8968c64b94.png 1269_a7059318d47dbc01.png”
#或源=$(查找。-name“*.png”)
#迭代已知文件
用于${SOURCES[@]}中的文件名
做
#直到第一个“\u1”字符的子字符串
LABEL=$(echo$FILENAME | cut-d“f”-1)
#设置元数据标签
mogrify-标签$label$文件名
完成
蒙太奇-标签%l$来源显示:

谢谢!不幸的是,删除第二个零件后可能会出现重复。如果您感兴趣,在我的例子中有一个更好的解决方案:不过,它也不在一行中…@StasS看起来该解决方案需要相同的脚本。更新了使用
mogrify
设置元数据的答案警告:
mogrify
命令读取、处理和覆盖图像文件,这可能会丢失信息(如果原始图像包含ImageMagick不关心的特定元数据)。如果您不想这样做,请对图像的副本进行操作。