Как я могу переименовать файлы в соответствии с их EXIF ​​"дата создания"? - Фотопедия
6 голосов
/

У меня есть около 3000 фотографий JPEG с именами, такими как "DSC_0596". В метаданных есть дата создания фотографии, что было бы гораздо полезнее. Есть ли способ извлечь дату из метаданных и добавить ее к имени фотографии?

Ответы [ 4 ]

9 голосов
/

ExifTool в значительной степени является бензопилой швейцарской армии для выполнения подобных задач. У него крутая кривая обучения, но как только вы закончите, переименование, которое вам нужно, совсем несложно:

exiftool -d '%Y%m%d-%H%M%%-03.c.%%e' '-filename<CreateDate' .

Переключатель -d указывает ExifTool форматировать даты в соответствии с шаблоном следующего аргумента. Шаблон содержит коды формата даты , которые заполняют различные фрагменты даты. Это переименовало бы файл, взятый сегодня в 17:34 к 20181226-1734-000.nef. Три нуля после времени - это номер копии , помещенный туда на %%-03.c в формате даты. Я объясню, почему это важно через минуту.

Следующий аргумент указывает ExifTool изменить имя файла на любое, которое находится в поле CreateDate в EXIF, используя формат даты, указанный ранее.

Наконец, . - это путь к каталогу, в котором вы хотите работать. Вы также можете указать отдельные изображения, если хотите.

О номере копии: это важно указать в именах файлов, поскольку многие камеры не предоставляют доли секунды в своих временных метках. Если в одну и ту же секунду было создано несколько файлов, при каждом последующем переименовании последний файл будет перезаписан, а вы получите только последний. При выборе имени ExifTool будет увеличивать номер копии, пока не найдет несуществующее имя файла и переименует файл в это имя. Обратите внимание, что это не устраняет дубликаты . Если вы используете этот метод для копирования изображений с карты в другой каталог, а затем снова запустите его для того же набора изображений, вы получите идентичные файлы с номерами 000 и 001.

.
4 голосов
/

Для простых вещей, где гибкость, мощность и сложность в ExifTool не нужны, мне нравится использовать инструмент jhead . Это инструмент командной строки, доступный для Linux, Mac и Windows.

jhead -n%Y%m%d-%H%M%S *.jpg

автоматически переименует все файлы, оканчивающиеся на .jpg в текущем каталоге, в формат, подобный 20181226-111141.jpg. Вы можете использовать %f, чтобы также включить оригинальное имя файла (без расширения). Так, например:

jhead -n%Y%m%d-%f *.jpg

... который дает дату (а не время) и исходное имя файла, например 20181226-DSC_0596.jpg.

Обратите внимание, что существует логика, позволяющая попытаться не переименовывать файлы, которые в основном состоят из цифр, что предотвращает случайное действие команды дважды. Используйте -nf вместо просто -n, чтобы переопределить это. Существует также логика автоматического добавления возрастающей завершающей цифры, если целевое имя файла уже существует.

Кроме того, я обычно добавляю -autorot и -ft в командную строку, чтобы согласовать ориентацию изображения с датчиком вращения камеры и чтобы время файла совпадало с временем exif.

2 голосов
/

Спасибо всем, но в итоге я использовал AmoK EXIF ​​Sorter , бесплатное приложение, которое делает все это просто, быстро и эффективно.

1 голос
/

Я использую следующий скрипт, помещенный в ~ / .local / share / nautilus / scripts (это должно работать для любого дистрибутива Linux, использующего Nautilus в качестве файлового менеджера):

#!/bin/bash

exiftool -fileOrder DateTimeOriginal -recurse -extension jpg -ignoreMinorErrors '-FileName<CreateDate' -d %Y-%m-%d%%-.3nc.%%e "$@"

Выполнение этого означает, что я могу выбрать один или несколько файлов / каталогов и рекурсивно переименовать все изображения JPEG в них из меню правой кнопки мыши, что очень удобно. Он также игнорирует любые файлы, которые не являются JPEG, поэтому мне не нужно беспокоиться о том, что находится в подкаталогах.

Выбранные файлы переименовываются в следующем порядке ГГГГММДД-001.jpg . Нумерация начинается с 001 и продолжается до 999, поэтому, если вы снимаете 1000 или более изображений за один день, вы должны изменить сценарий (измените 3nc на 4nc, числовое значение = количество используемых цифр).

Использование аргумента -fileOrder DateTimeOriginal гарантирует, что изображения обрабатываются по порядку, а нумерация строго следует этому порядку, в противном случае снимки в быстрой последовательности не будут перенумерованы в том порядке, в котором они были сняты.

Добро пожаловать на сайт Фотопедия, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...