Как получить дату создания фотографий с помощью скрипта


То, что я хочу сделать, - это реорганизовать файлы в моей папке Camera Roll. Используя дату создания, я хочу поместить их в папки в соответствии с форматом год / месяц, используя их дату создания.

В этом ответе они объясняют, как создавать папки и организовывать их: https://stackoverflow.com/a/1314394/4980886

#!/bin/bash
find $PHOTO_DIR -regextype posix-extended -type d -regex '.*/[0-9]{4}/[0-9]{2}/[0-9]{2}$' |
while read dir; do
    newdir="$(echo $dir | sed 's@/([0-9]{4})/([0-9]{2})/([0-9]{2})$@/1-2-3@')"
    mv "$dir" "$newdir"
    rmdir "$(dirname $dir)"
    rmdir "$(dirname $(dirname $dir))"
done

Но это не касается того, как получить дату создания, возможно, я должен получить метаданные из данных EXIF. Как сделать что-либо?

2 2

2 ответа:

В соответствии с man-страницей exiftool 'Примеры переименования '

exiftool '-Directory<DateTimeOriginal' -d %Y/%m/%d dir

Я написал сценарий bash для копирования файлов прямо с моего iphone / ipad и копирования их в папки на целевом диске на основе даты создания образа. я использую программу под названием exiftool, найденную в http://www.sno.phy.queensu.ca/~phil / exiftool /

Для данного изображения я извлекаю дату-время создания в массив с помощью

DATEBITS=( $(exiftool -CreateDate -FileModifyDate -DateTimeOriginal "$IMGFILE" | awk -F: '{ print $2 ":" $3 ":" $4 ":" $5 ":" $6 }' | sed 's/+[0-9]*//' | sort | grep -v 1970: | cut -d: -f1-6 | tr ':' ' ' | head -1) )

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

YR=${DATEBITS[0]}
MTH=${DATEBITS[1]}
DAY=${DATEBITS[2]}
HR=${DATEBITS[3]}
MIN=${DATEBITS[4]}
SEC=${DATEBITS[5]}

Тогда тривиально создать каталог, в который нужно занести файл изображения