Команда Exiftool в цикле for Bash не работает

Я пытаюсь записать и перезаписать метаданные jpg с помощью exiftool в цикле for bash, но конкретная команда не будет работать в цикле. Я хочу перезаписать gpstimestamp исходными данными datetime, это работает, если выполняется в командной строке, но не в сценарии.

for f in $(ls *.jpg); do

    [... stuff that works]

    exiftool "-gpstimestamp<datetimeoriginal" $f
done

Любые идеи, почему это не работает в цикле?


person upgrd    schedule 12.06.2017    source источник
comment
(1) Никогда не анализируйте вывод ls таким образом, Разбор ls самый первый< /i> запись в большом списке подводных камней bash . И (2) укажите свои переменные. И если вам нужна помощь, всегда лучше рассказать нам, КАК что-то не получается. Это не работает, недостаточно — включите любые сообщения об ошибках или покажите ошибочное поведение, а также опишите, что вы ожидали, и как вы обнаруживаете разницу.   -  person ghoti    schedule 12.06.2017


Ответы (2)


Цикл for можно сделать проще:

#!/bin/bash
for f in *.jpg
do

    [... stuff that works]

    exiftool "-gpstimestamp<datetimeoriginal" $f
done

Примечание. Вместо запуска цикла for вы можете выполнить exiftool для обработки всех *.jpg файлов в каталоге, используя:

информация об exiftool

exiftool "-gpstimestamp<datetimeoriginal" -ext jpg .

управление exiftool

-ext EXT (-extension) Обрабатывать файлы с указанным расширением

person Yaron    schedule 12.06.2017
comment
Спасибо за советы! Но команда -gpstimestamp‹datetimeoriginal не работает... Она работает, когда я использую ее следующим образом: exiftool -gpstimestamp‹datetimeoriginal file.jpg - person upgrd; 12.06.2017
comment
Оно работает! Mea culpa, я пробовал на файлах jpeg, а не на jpg... фейспалм!!!! :D - person upgrd; 12.06.2017

Exiftool не нужно запускать в цикле, и без него он будет работать намного быстрее (Exiftool распространенная ошибка 3).

Используйте эту команду сразу после цикла
exiftool '-gpstimestamp<datetimeoriginal' -ext jpg /path/to/target/dir

Это скопирует DateTimeOriginal в GPSTimestamp для всех файлов Jpg в целевом каталоге. Вы можете добавить -r для рекурсии в подкаталоги.

Одна вещь, которую вы должны принять во внимание, это тот факт, что GPSTimestamp, как ожидается, будет временем UTC, а DateTimeOriginal обычно является часовым поясом, в котором было снято изображение.

person StarGeek    schedule 12.06.2017