Как стать автором
Обновить

Комментарии 29

о! весьма.

а можно же ещё сделать touch файла этой датой и потом соритровать уже по дате изменения файла.

ну и вместо awk наверно проще былобы сделать grep 'DateTime' | cut -f3
А дело в том, что там несколько этих DateTime, в зависимости от модели фотоаппарата, и хотелось выбрать самую последнюю дату. И вроде там сначала была более сложная программа на awk, потом я ее укоротил. Да, про touch мне в голову мысль не пришла :(
Логично, кстати было-бы!
последнее: tail -n1 :)
но последняя по встречаемости не значит последняя по времени.

а так, если поглядеть, то если есть DateTimeOriginal/DateTimeDigitized,
то есть и просто DateTime, которое последнее по дате.
Ну в общем да, можно было не выпендриваться с awk-ом. Но уж больно я к нему не равнодушен :)
мне недавно открыли глаза, оказывается есть такой gawk и работает он в разы быстрее того же awk
Это касалось SCO Unix, насколько я знаю, под всеми линуксами уже gawk и используется. Хотя, может я чего и путаю.
Мне больше nawk нравится.
а ещё бывают фотики с коряво выставленной датой.
(наступали на эти грабли, когда чистилка сносила их с сервера как устаревшие)
Дата и время для фоток на веб сервисах — вообще отдельная песня.
1. Кривое время — это когда батареи например садятся или что нибудь перезапускается — тогда время по умолчанию в камере ставится.
2. Круглая Земля с разными временными зонами. С этим столкнулись, когда с треками GPS увязывали (UTM там всегда). А изготовители камер до недавнего времени об этом, похоже, не подозревали :)

Вообще exif интересная тема.

Мои +1 и спасибо автору

Вот тоже много думал об этих датах. Хорошо бы при разгребании такие аномалии автоматически находить и предлагать упорядочивать.


Что характерно, тут есть несколько типичных кейсов:


  1. Дата на фотоаппарате слетела при смене батареек.
    В этом случае фотографии относительно друг-друга выстраиваются по времени пропорционально и правильно. Достаточно привязать один кадр такой серии к реальной дате/времени, а остальные можно рассчитать и привязать автоматом.
    Важно обнаружить момент, когда дата слетает посередине серии так, что часть фоток улетают на несколько лет в прошлое. Как на косвенный признак такой ситуации можно опираться на порядковый номер фото и её положение в исходных каталогах в файлопомойке.
  2. Дата/время сдвинуты из-за приблизительной установки. Серия в целом отображается в таймлайне где надо, и (при наличии опорного кадра, где были засняты часы) можно восстановить точное время всей серии.
  3. Дата/время установлены по некорректному часовому поясу во всей серии или её частях. Можно, к примеру, предусмотреть возможность ручной установки в таймлайне с фотографиями маркеров смены часового пояса.
  4. Сочетание всех вышеперечисленных случаев из-за слияния в куче каталогов фоток из разных источников. Самый неприятный случай, когда большая шумная компания сливает все свои фотки в кучу, потом самый инициативный еще и разгруппирует по людям или по каким-то еще не очевидным признакам. Тут надо, наверно, какое-то автотегирование по модели и серийному номеру фотика, группировку источников… Ну и адаптацию решений вышеперечисленных проблем к такому вот сложному случаю.
Хороший скриптик, молодец. Но думаю место этому посту в Linux для всех
Ну почему в Linux-то? Это и под леопардом работает. Правда, я думаю, что там это можно сделать парой кликов :)
Ок, тогда в bash :)
Нет, не подходит, оно не то делает:
echo «2006:01:12» | sed 's|:||g'
20060112
А надо, чтобы получилось 2006/01/12
:)

-=>> echo 2006:01:12 | sed 's|:|/|g'
2006/01/12
Действительно, спасибо. А я вечно прямолинейно, по-дуболомски, маскирую эти слеши.
Вообще наиболее правильное средство для работы с EXIF — Perl exiftool. Оно умеет работать с TIFF и RAW, знает про всевозможные теги специфичные для разных камер, всякие хитрые форматы метаданных вроде XMP. Плюс умеет выводить данные в формате для скриптов, благодаря чему не нужны игры с sed
Так-то оно так, но я не знаю перл, он появился позже awk-а, и мне не хочется его учить.
я тоже perl не знаю, использую command line утилиту от этого пакета в скриптах на shell/sed/awk
Понятно! Я в пакетах видел эго, но подумал, что не знаю перла, поэтому его даже и не ставил. Ясно, век живи — век учись.
s/эго/его/g
В Gnome можно сделать то же самое, импортировав все фотографии с помощью F-Spot (включив птичку «Копировать фотографии в папку»).
Понял, спасибо, но у меня нет там Х11, только АЦТ :)

man jhead
jhead -n%Y%m%d-%H%M%S *.jpg This will rename files matched by *.jpg in the format YYYYMMDD-HHMMSS
А если с четырых фотоаппаратов, делавших серии по 5 кадров в секунду надо упорядочить снимки?
про 5 кадров в секунду — jhead добавит при переименовании суффикс a,b,c,d,e
ну а дальге — тоже костылями раскидывать по папкам
Автор молодца, скриптик очень своевременный, я все же остановился вот на таком варианте:
exiftool -r '-Directory<DateTimeOriginal' -d /path_to/%Y/%Y.%m.%d /path_from/


Для установки exiftool в gentoo, достаточно сказать:
emerge exiftool
а в ubuntu:
aptitude install libimage-exiftool-perl

А давайте помозгоштурмим требования к ИДЕАЛЬНОЙ CLI утилите для работы с фотоколлекциями.
Я вот набросал свои хотелки тут.
Постепенно разгребу всё это, выделю MVP и по 5 минут в неделю буду выкраивать=)

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации