Команда, чтобы добавить определенное время на имя файла?
Я только что вернулся из поездки и постараюсь организовать минимум фотографий, сделанных мной и моей женой, с помощью 4 устройств: наших 2 смартфонов и 2 камер.
Я решил переименовать все файлы с помощью PyRenamer (EXIF) следующим образом: YYYYMMDD_HHMMSS.jpg
Оба смартфона и одна камера были по местному времени, без проблем. Но у камеры моей жены был временной сдвиг 5:46.
Мой вопрос прост: как я могу добавить 5:46 к каждому файлу?
Заранее большое спасибо.
1 ответ
ПРИМЕЧАНИЕ: следующее не изменяет ни данные EXIF, ни фактическую временную метку файлов - только их имена. Может быть предпочтительным изменить все три последовательно (возможно, используя exiftool
?)
Кажется, это возможно, используя Perl на основе prename
/ rename
команда, используя strptime
читать в отформатированной временной строке, затем strftime
выписать его обратно после добавления смещения в секундах (неявно преобразуется в объект Time::Piece).
Судя по комментариям, "у камеры моей жены был сдвиг во времени 5:46", вы, по-видимому, имеете в виду 5 часов 46 минут (а не, скажем, 5 минут 46 секунд), и вам требуется сдвиг (вперед) 5 x 3600 + 46 х 60 = 20760 секунд. Так что вы могли бы сделать:
prename -vn -- '
BEGIN{use Time::Piece};
s/\d+_\d+/(20760+Time::Piece->strptime($&, "%Y%m%d_%H%M%S"))->strftime("%Y%m%d_%H%M%S")/e
' *.jpg
20161019_112301.jpg renamed as 20161019_170901.jpg
-n
флаг для тестирования - уберите его, если вы уверены, что команда выполняет правильное преобразование.
Посмотрите этот связанный вопрос Как я могу конвертировать имена папок из одного формата даты в другой?