Программное обеспечение для перекрестной проверки даты EXIF ​​и даты в имени файла?

У меня есть библиотека из 25 000 фотографий (JPG). Я поддерживал библиотеку так, чтобы дата, сделанная в данных EXIF, отражала фактическую дату захвата, но я продолжаю находить исключения, когда я пропустил странную фотографию.

Поскольку все файлы называются «ГГГГ хххх» (где ГГГГ — это дата, а хххх — описание), я хочу попытаться найти все файлы, в которых год даты, взятой в данных EXIF, не соответствует первым 4 символам. имени файла.

Кто-нибудь знает способ сделать это? Я использую Windows 7 X64

Ответы (2)

ExifTool — это кроссплатформенный инструмент, который будет работать из командной строки Windows. Он очень мощный, с синтаксисом на основе Perl, позволяющим сравнивать различные метаданные. В каталоге, полном файлов JPEG, эта команда напечатает список всех файлов, в которых начало имени файла не совпадает с годом, начиная со значения EXIF ​​даты:

exiftool -d "%Y" -if "$FileName !~ /^$DateTimeOriginal/" -p "$FileName" *.jpg

Обратите внимание на двойные кавычки, так как вы работаете в Windows. На Mac или Linux используйте одинарные кавычки:

exiftool -d '%Y' -if '$FileName !~ /^$DateTimeOriginal/' -p '$FileName' *.jpg

Это также напечатает что-то вроде «1600 файлов сбойное состояние» — здесь «сбой» означает, что они названы правильно , так как заданное «условие» не соответствует, что указывается !~оператором. Измените это на, =~если вы хотите, чтобы он печатал только те файлы, которые соответствуют . (Значок ^указывает на начало файла — синтаксис такой же, как у регулярных выражений Perl .)

Часть -d '%Y'устанавливает формат даты как год. Вы можете изменить это, чтобы оно соответствовало вашему соглашению об именах. Например, если ваши файлы должны начинаться с четырехзначного года, двухзначного месяца и двухзначного дня, разделенных дефисом, используйте -d '%Y-%m-%d'.

Если у вас несколько папок, замените *.jpgв конце строки на -r ., что заставит ExifTool работать рекурсивно в каждой из них. (Предполагается ., что вы хотите начать в текущем каталоге — измените .путь на путь, если вы хотите запустить его в другом месте). Также в этом случае вы, вероятно, захотите -p '$Directory/$FileNameвместо одного FileName.

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

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

Большое спасибо за это. Я загрузил ExifTool и попробовал команду выше, но я просто получаю эти две ошибки: «Файл не найден: !~» и «Файл не найден: /$DateTimeOriginal/' ???
@itm Возможно, вместо одинарных кавычек попробуйте использовать двойные кавычки? У меня нет доступа к Windows, чтобы попробовать.
Хорошо, подтверждено в FAQ ExifTool , что Windows действительно хочет здесь двойные кавычки.
Это прекрасно - теперь это работает. Большое спасибо за Вашу помощь.
Это должно иметь возможность довольно изящно масштабироваться до смехотворно большой библиотеки. Мне любопытно, сколько времени это займет у вас.

Для этого я использовал Advanced Renamer . Используйте метод «Заменить» и используйте теги изображения в качестве замещающего текста.

Может ли это идентифицировать существующие файлы, которые не соответствуют схеме?
Да, дисплей показывает до и после имени и имеет цветовую маркировку для измененного и неизмененного. Ничего не произойдет, пока вы не совершите действие.
Спасибо за это. Функции выглядят идеально, но размер моей библиотеки фотографий делает ее практически непригодной для использования. Простое нажатие в текстовом поле для изменения строки поиска приводит к задержке в несколько минут каждый раз. Это позор, так как в остальном это выглядит как действительно отличный инструмент. Как только я добавил свою библиотеку фотографий в список файлов, пользовательский интерфейс почти полностью перестает отвечать на запросы: 0 (