Команда, чтобы добавить определенное время на имя файла?

Я только что вернулся из поездки и постараюсь организовать минимум фотографий, сделанных мной и моей женой, с помощью 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 флаг для тестирования - уберите его, если вы уверены, что команда выполняет правильное преобразование.

Посмотрите этот связанный вопрос Как я могу конвертировать имена папок из одного формата даты в другой?

Другие вопросы по тегам