Как организовать фото и видео файлы по годам, месяцам и дням
В предыдущей статье я описывал как работать с утилитой для массового переименования фотографий и видео, да и вообще любых файлов. Сегодня мы рассмотрим на практике как организовать фото и видео файлы по годам, месяцам и дням используя утилиту для переименования файлов 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 и положет в нее все видео и фото что смог обработать по годам, месяцам и дням.
Читайте также:
- Как отформатировать флешку на маке, если она не читается
- Изменить время жизни сессии для админа в мадженте
- Cli команды для Magento2
- Условия if else в командной строке bash
- Cli string replace
Один комментарий на «“Как организовать фото и видео файлы по годам, месяцам и дням”»
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
[…] следующей статье я покажу пример уже готовых команд как организовать фото и видео файлы по годам, месяцам и… для медиатеки на Mac OS или NAS […]