Сравнил время timestamp со временем EXIF. Иногда разница всего пара часов, иногда - несколько дней. Значит это не одно и то же. По подсказке MadKox стал ставить пакет exif через Synaptic. Весит 30 кб, но пока ставил, успел заметить, что рядом есть что-то похожее: exiv2, причем уже установлено. Стал читать к нему мануал и сразу забыл про exif (наверное, exif тоже хорош, но exiv2 мне подошел сразу). Используется так:
exiv2 -T mv image.jpg
По этой команде время модификации файла синхронизируется с тем, что у него стоит в EXIF, что нам и нужно. Имя файла при этом не изменяется.
Здесь описан откат к прежнему состоянию (все файлы в одной папке).
Сначала нужно все файлы, уже разбросанные по папкам, снова собрать в одну:
find . -iname "*jpg" | xargs mv -t /tmp
Теперь удаляем пустые папки:
rmdir *
Перемещаем файлы из временной папки в текущую:
mv /tmp/* .
Заодно можно привести расширение к одному (нижнему) регистру:
find . -name "*JPG" -exec rename 's/JPG/jpg/g' {} ;
Когда мы снова в прежнем состоянии (все файлы в одной папке), меняем их время модификации на то, что стоит в EXIF:
exiv2 -T mv *.jpg
Теперь можно с чистой совестью запускать скрипт от ArcFi с небольшим изменением:
find . -iname "*jpg" | while read FILE ; do DIR=$(ls -lt "$FILE" | awk '{print $6}') ; test -d $DIR || mkdir $DIR ; mv "$FILE" $DIR ; done
Ну что, осталось только наладить прямой перенос с камеры на диск.
Пользователь решил продолжить мысль 17 Марта 2010, 23:23:55:
После того, как все было приведено в порядок, подправил скрипт, чтобы копировать с камеры на диск напрямую.
#!/bin/bash
# Скрипт копирует файлы с камеры на диск, создавая папки
# одноименные дате фотографии и помещая их туда.
SOURCE=/media/disk/DCIM/100OLYMP # исходная папка (на камере)
TARGET=/media/External_320/Pictures/Olympus # папка для копирования
find $SOURCE -iname "*.jpg" -or -iname "*.avi" -or -iname "*.mov" |
while read FILE ; do DIR=$(ls -lt "$FILE" |
awk '{print $6}') ;
test -d $TARGET/$DIR ||
mkdir $TARGET/$DIR ;
cp -uv --preserve "$FILE" $TARGET/$DIR/ ;
done
Записал это в текстовый файл, назвал
olympus, сделал исполняемым и поместил в /usr/local/bin
Теперь все копируется по команде
olympusНе знаю только, при подключении всяких там флешек и т.п. не будет ли меняться путь к исходной папке. Имею в виду /media/disk
На Windows такое случалось, когда было подключено несколько USB или скрипт запускался с другого компьютера. Приходилось в блокноте открывать и менять буквы дисков. Ну ладно, поживем - увидим.
Благодарность всем, кто дал ссылки, а особенно -
ArcFi за скрипт.