Организуйте свои фотографии в папки по датам в автоматическом режиме

Tech Tip: Automaticaly Organize Your Photos by Date
October 7th, 2009 by Zsolt Hajdu in HOWTOs

Итак, лето кончилось и ваша цифровая камера забита картинками под завязку. Как это всё организовать? Конечно из командной строки! Предлагаемый здесь скрипт сложит их в подкаталоги по датам автоматически.

Когда мой фотоаппарат заполняется, обычно через несколько недель или месяцев, я выгружаю картинки в свою Убунту, обычно в один каталог, в котором нет подкаталогов. Мне пришло в голову, что наиболее удобным способом организации снимков будет их сортировка по дате получения: как правило мои снимки снабжаются геотегами, а снимки, сделанные в одно время, скорее всего сделаны и в одном месте.

Следующий коротенький скрипт проходит по всем файлам .jpg в текущем каталоге и получает дату сохранения из самого файла снимка. Далее создаются каталоги в соответствии с найденными датами (проверка на создание каталога происходит на каждом проходе и каталог создается, если такого имени еще нет) в формате year/month/day в виде чисел и файл снимка копируется в него. Таким образом, файл с именем IMG_001.jpg, созданный 4 июля 2009 года будет расположен по пути 2009/07/04/IMG_001.jpg.

Скрипт требует, чтобы был установлен пакет IMageMagick и это не является проблемой в современных дистрибутивах.

#!/bin/sh

# Goes through all jpeg files in current directory, grabs date from each
# and sorts them into subdirectories according to the date
# Creates subdirectories corresponding to the dates as necessary.

for fil in *.jpg # Also try *.JPG
do
datepath="$(identify -verbose $fil | grep DateTimeOri | awk '{print $2 }' | sed s%:%/%g)"
if ! test -e "$datepath"; then
mkdir -pv "$datepath"
fi

mv -v $fil $datepath
done

Назад