2015-08-14 3 views
1

Я хотел бы фотомонтаж нескольких файлов с именами, как эти: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

Операция подстроки не поддерживается с помощью 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: 
+0

Спасибо! К сожалению, после удаления второй части могут быть дубликаты. Если вам интересно, есть решение, которое лучше работает в моем случае: http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=28203#p124820 Хотя это также не в одной строке ... –

+0

@StasS Похоже, для этого решения потребуется идентичный скрипт. Обновленный ответ на использование 'mogrify' для установки метаданных – emcconville

+1

Предупреждение: команда' mogrify' считывает, обрабатывает и перезаписывает файлы изображений, что может потерять информацию (если исходные изображения содержат определенные метаданные, которые не нужны ImageMagick). Если вы этого не хотите, используйте копии ваших изображений. –

Смежные вопросы