我想用以下名称对多个文件进行蒙太奇:
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:
然后显示整个文件名很长。是否有可能以某种方式从文件名中提取子字符串?
答案 0 :(得分:1)
montage
实用程序不支持子字符串操作,但对于您的操作,bash将是理想的。
#!/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: