Как организовать фото и видео файлы по годам, месяцам и дням | Wiki | PWODEV
, 29.04.2020 11:39

Как организовать фото и видео файлы по годам, месяцам и дням


В предыдущей статье я описывал как работать с утилитой для массового переименования фотографий и видео, да и вообще любых файлов. Сегодня мы рассмотрим на практике как организовать фото и видео файлы по годам, месяцам и дням используя утилиту для переименования файлов exiftool для Mac OS или любой другой системе.

Исходные значения у нас следующие, имеется папка где в хаотичном порядке лежал фото и видео файлы. Наша задача правильно распределить это все по датам YYYY/MM/YYYY.MM.DD/file_name-001.jpg примерно так. Есть еще идея чтобы переименовать все файлы по дате YYYY.MM.DD_HH.MM.SS-001.jpg но не уверен что это действительно хорошая идея, так как иногда у нас в exif даты нет или она не правильная, но зато она была сохранена в названии файла. Поэтому оставим пока исходное название файла.

Приступим.

1 Шаг

Перенесем все файлы из папки «to_update» и всех подпапках, где есть значение $DateTimeOriginal, в папку «_output» где будут лежать папки по годам и месяцам и дням. Если названия файлов будут повторяться, добавим «-001» перед расширением.

exiftool -r '-FileName<./_output/${DateTimeOriginal}/%f%-3c.%e' -d '%Y/%m/%Y.%m.%d' -if '($DateTimeOriginal)' ./to_update

2 Шаг

В оставшихся файлах найдем те где нет $DateTimeOriginal но есть $CreateDate и проделаем то же что и предыдущий пункт но со значением даты $CreateDate.

exiftool -r '-FileName<./_output/${CreateDate}/%f%-3c.%e' -d '%Y/%m/%Y.%m.%d' -if '($CreateDate and not $DateTimeOriginal)' ./to_update

3 Шаг

Теперь надо просмотреть все что осталось и подправить в этих файлах дату вручную. Для этого перенесем все оставшиеся файлы по расширениям в папку _without_date.

exiftool -r '-FileName<./_without_date/${FileType}/${Directory}/%f%-3c.%e' done

4 Шаг

Надо бы еще и подправить дату создания файла на ту что находится в $DateTimeOriginal или $CreateDate. Делается это изменением параметра $FileModifyDate. Это я добавил в bash скрипте ниже.

А теперь напишем все это аккуратно в bash скрипте.

Cоздаем файлик image_rename в папке bin вашего юзера и записываем в него следующий код:

#!/bin/bash

d="$1"

if [[ -d "$d" ]]
then
  echo "-----------"
  echo "Rename START"
  echo $d
  echo "-----------"
  echo "DateTimeOriginal"
  exiftool -r '-FileModifyDate<${DateTimeOriginal}' -d '%Y:%m:%d %H:%m:%S' -if '($DateTimeOriginal)' $d
  exiftool -r '-FileName<./_output/${DateTimeOriginal}/%f%-3c.%e' -d '%Y/%m/%Y.%m.%d' -if '($DateTimeOriginal)' $d
  echo "-----------"
  echo "CreateDate"
  exiftool -r '-FileModifyDate<${CreateDate}' -d '%Y:%m:%d %H:%m:%S' -if '($CreateDate and not $DateTimeOriginal)' $d
  exiftool -r '-FileName<./_output/${CreateDate}/%f%-3c.%e' -d '%Y/%m/%Y.%m.%d' -if '($CreateDate and not $DateTimeOriginal)' $d
  echo "-----------"
  echo "Without Date"
  exiftool -r '-FileName<./_without_date/${FileType}/${Directory}/%f%-3c.%e' $d
  echo "-----------"
  echo "Rename DONE"
  echo "-----------"
else
  echo "Error: directory \"${d}\" not found. Can not continue."
fi

Чтобы скрипт был доступен с любого места, сделать скрипт видимым, надо добавить папку bin где лежит скрипт в path. Делаем это следующей командой:

export PATH="$HOME/bin:$PATH"

Готово. Теперь идем в нужную нам папку в командной строке и пишем команду:

image_rename folder_name

folder_name меняем на ту папку в которой лежат файлы для переименования.

Скрипт создаст в текущей директории папку _output и положет в нее все видео и фото что смог обработать по годам, месяцам и дням.


Один комментарий на «“Как организовать фото и видео файлы по годам, месяцам и дням”»

Добавить комментарий