Я использую pyrenamer
с моей коллекцией фотографий, и она отлично работает, за исключением одного выпуска. Я хочу, чтобы он переименовал фотографии по их метаданным по дате, с трехзначным номером в конце. Каждая папка в моей библиотеке представляет день, и я хочу, чтобы фотографии заканчивались цифрами от 001 до 999, начиная с 001 для каждой папки. Имя файла примера будет 2016-01-31-001.jpg.
Shotwell обрабатывает создание структуры каталогов при импорте со структурой %Y/%m/%d
в опциях, но когда я рекурсивно использую pyrenamer в каталоге ~ / Pictures, я не вижу ожидаемого результата. Он переименовывается по дате, но продолжает увеличиваться в разных папках, вместо того, чтобы начинаться с 001 для каждой новой папки. Есть ли более простой способ сделать это?
Я знаю, что мог бы добавить больше переменных метаданных и переименовать в соответствии с часами, минутами и секундами, но это дает более длинные имена файлов, чем я хочу. Моя камера также может делать несколько снимков в секунду, так что это проблематично для переименования.
Какой самый простой способ сделать это, пожалуйста? Мне нравится использовать pyrenamer, но скрипт bash тоже подойдет.
Pictures/
├── Folder 1/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
├── Folder 2/
│ ├── YY-MM-DD-003.jpg
│ └── YY-MM-DD-004.jpg
...
Pictures/
├── Folder 1/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
├── Folder 2/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
...
Для переименования всей библиотеки изображений фотографий JPEG к YYYY-MM-DD-XXX.jpg формат, подсчитывая и начиная с-001 каждого нового дня, используют эту команду с exiftool
:
exiftool -fileOrder DateTimeOriginal -recurse -extension jpg -extension jpeg -ignoreMinorErrors '-FileName<CreateDate' -d %Y-%m-%d%%-.3nc.%%e ~/Pictures/
Для объяснения команды полностью вот то, как она работает.
exiftool
запускает сценарий. -fileOrder DateTimeOriginal
силы exiftool для обработки изображений в тот же порядок они были взяты . Это очень важно для сохранения нумерации изображения в течение дня в исходном хронологическом порядке. -recurse
рекурсивно подкаталоги процессов, который полезен, если Вы используете Shotwell для импорта, потому что фотографии помещаются в каталоги, организованные по дате. -extension jpg -extension jpeg
удостоверится, что только файлы JPEG обрабатываются. (Обратите внимание, что они не являются определенными для случая и jpg=JPG, таким образом, мы ловим все) -ignoreMinorErrors
, Игнорируют любые ошибки, которые не влияют на наш желаемый результат (обычно проблемы, читая несвязанные теги, которые не необходимы для этой операции). '-FileName<CreateDate'
Помещает созданную дату фотографии в имя файла. -d %Y-%m-%d%%-.3nc.%%e
Здесь -d
наборы желаемый выходной формат даты. Мы будем использовать написанный через дефис год из четырех знаков затем двухразрядный месяц и день (%Y-%m-%d
) сопровождаемый трехзначным числом, запускающимся с 001 (%%-.3nc
), сохраняя исходное расширение файла (.%%e
). ~/Pictures/
последний объект, это - просто каталог, который exiftool
должен обработать с командой. примечание А об ошибках, эти -ignoreMinorErrors
помогает, но тем не менее можно видеть, что сообщение "Предупреждает: Плохой каталог PreviewIFD" , который является безопасен проигнорировать или "Предупреждение: Никакой перезаписываемый набор тегов из /path/to/problem/image.jpg" . Второй, который я не мог разрешить, но я только, видел его для нескольких изображений, таким образом, я вручную переименовал их в Наутилусе как обходное решение.
Эта команда могла все еще быть улучшена, но она тестируется и работающий над большим (40 ГБ, 13 000 изображений) фото библиотека, и это быстро и не производит ошибок, только не удаваясь переименовать случайное изображение, которое пропускает тег, который создаст большая часть любой современной камеры.