это оставляет переименованный исходный файл изображения. Как удалить исходный файл во время этого процесса?
Используйте либо -overwrite_original
, либо overwrite_original_in_place
, чтобы exiftool
. Опция на месте сохраняет информацию о файловой системе, такую как время создания файла, время доступа, теги Finder, значок и т. Д., Но занимает немного больше времени, чем другая опция.
Я бы хотел, чтобы все это выполнялось для всех новых изображений, добавляемых в папку.
Для этого вам необходимо использовать функцию Mac OS, которая называется «Действия с папкой». Действие папки запускается, когда происходят изменения в папке, к которой прикреплено действие. Действия папки могут быть написаны в AppleScript, но ваш случай достаточно прост, чтобы Automator подходил для создания действия. Чтобы получить подробное описание, прочитайте статью блога Ask Different Учебное пособие по действиям с папками: автоматизация, знакомство с файловой системой .
Запуск Automator
. Выберите тип Folder Action
для своего документа.
Вам будет предоставлен пустой рабочий процесс с возможностью в верхней панели выбрать папку, к которой должно быть привязано это действие. Нажмите на это всплывающее меню и выберите Other...
, чтобы выбрать папку, в которой будут находиться изображения, к которым вы хотите применить свой тег IPTC.
Сохраните действие Automator, назвав его чем-нибудь полезным (например, Apply IPTC By-line
).
Следующие шаги рабочего процесса гораздо менее сложны, чем шаги статьи AskDifferent. Вам нужно всего 2 шага рабочего процесса: один для фильтрации рабочего процесса, чтобы только файлы изображений передавались в exiftool
; и шаг сценария оболочки, который запускается exiftool
, как если бы вы запускали его в командной строке.
Элементы фильтра поиска : В Библиотека действий> Файлы и папки перетащите действие Элементы поиска фильтра в рабочий процесс.
Выполнить сценарий оболочки : в разделе Библиотека действий> Утилиты перетащите действие Выполнить сценарий оболочки в рабочий процесс под действием «Фильтровать элементы поиска».
Вставьте следующее в текстовый блок Run Shell Script:
export EXIFTOOL=/usr/local/bin/exiftool
for f in "$@"
do
$EXIFTOOL -iptc:By-line="mybyline" -overwrite_original_in_place "$f"
done
Рабочий процесс должен выглядеть следующим образом:

Примечание , особенно это Пропуск ввода: - as arguments
(очень важно).
Обратите внимание на первую строку (export EXIFTOOL=...
). Хотя местоположение exiftool
, скорее всего, находится в $PATH
вашего пользователя (например, возможно, вы использовали Homebrew для установки Exiftool), системная переменная $PATH
, используемая Automator, скорее всего, не будет знать, где найти exiftool
исполняемый файл. Чтобы убедиться, что рабочий процесс Automator работает правильно, откройте Terminal , как обычно, и введите команду: which exiftool
. Возвращаемый путь должен быть вставлен справа от export EXIFTOOL=
в первой строке текстового блока Run Shell Script. ** Важно *: убедитесь, что между символом =
и указанным вами путем нет пробела. Пробел сломает скрипт.
Сохраните действие папки Automator.
Проверьте это, скопировав файл изображения в папку с прикрепленным действием. Я подчеркнул «копирование», потому что это действие изменит то, что вы размещаете там. Если что-то сломано, вы не хотите повредить единственную копию файла, который вы используете.
Я также подумал, что было бы здорово, если бы я смог зафиксировать имя папки, в которой находятся изображения, и добавить это имя в «подпись» IPTC.
Это самая легкая часть. Просто измените текст Run Shell Script на следующий:
export EXIFTOOL=/usr/local/bin/exiftool
for f in "$@"
do
dir="$(basename "$(dirname ${f})")"
$EXIFTOOL -iptc:By-line="${dir}" -overwrite_original_in_place "$f"
done
Так же, как и оригинальный сценарий оболочки, он запускает exiftool
для каждого файла, на котором выполняется действие папки. Однако в этом случае перед запуском exiftool
для каждого файла мы сохраняем имя каталога файла в переменной dir
:
$(dirname "${f}")
получает путь к имени файла без самого имени файла (то есть dirname
из /Users/me/Pictures/TagIPTC/img_2112.jpg
будет /Users/me/Pictures/TagIPTC
.
dir="$(basename "...")"
получает последнюю часть пути, пройденного к нему. Таким образом, basename /Users/me/Pictures/TagIPTC
просто даст TagIPTC
.
Затем, когда мы запускаем exiftool
, мы заменяем dir
именем папки, содержащим каждый файл изображения; то есть папка с прикрепленным к ней действием папки.
Примечание
Если вы перетащите папку, содержащую файлы изображений, это действие не будет работать.