imagemagick蒙太奇:标记带有部分文件名的图像

时间:2015-08-14 13:12:14

标签: imagemagick

我想用以下名称对多个文件进行蒙太奇:

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 -label %t * show: 然后显示整个文件名很长。是否有可能以某种方式从文件名中提取子字符串?

1 个答案:

答案 0 :(得分:1)

montage实用程序不支持子字符串操作,但对于您的操作,将是理想的。

 #!/bin/bash
 SOURCES="1235_9123a46d52ecb2de.png 123_6a51ef8968c64b94.png 1269_a7059318d47dbc01.png"
 # or SOURCES=$(find . -name "*.png")
 # Iterate over known files
 for FILENAME in ${SOURCES[@]}
 do
    # Substring up to first "_" character
    LABEL=$(echo $FILENAME | cut -d "_" -f 1)
    # Set meta-data label
    mogrify -label $LABEL $FILENAME
 done
 montage -label %l $SOURCES show: