Как использовать пользовательские переменные с ExifTool? - Фотопедия
5 голосов
/ 03 сентября 2017

Я хотел бы переименовать мои фотографии, используя exiftool. Это моя структура папок:

YYYY/
  MM/
    EVENT/
      YYYYMMDD_HHMMSS.ext

Вот пример сценария того, что я хотел бы сделать:

echo 'Name of event?'
read event
exiftool -r '-FileName<CreateDate' -d '%Y/%m/%event/%Y%m%d_%H%M%S%%-c.%%le' .

К сожалению, это не работает. Как я могу включить название события в структуру моей папки?

1 Ответ

5 голосов
/ 03 сентября 2017

Вы неправильно используете переменную с предоставленным пользователем вводом. В этом ответе предполагается, что вы пытаетесь запустить этот скрипт с помощью bash (или совместимой) оболочки. Если нет, вам нужно обратиться к тому, как обрабатывать переменные в вашей оболочке.

Вам нужно сослаться на переменную оболочки, используя синтаксис оболочки, а не аргумент exiftool, и удалить одинарные ("сильные") кавычки, в результате чего ссылка на переменную будет простой литеральной строкой (передавая имя , а не значение, до exiftool). То, что вы на самом деле хотите, это:

event="EVENT"
exiftool -r '-FileName<CreateDate' -d "%Y/%m/$event/%Y%m%d_%H%M%S%%-c.%%le" .

Двойные ("слабые") кавычки позволят оболочке заменить корректно ссылающуюся переменную (используя "$" в качестве префикса), при этом все еще защищая любые пробелы в пользовательском вводе.

...