Я восстановил изображения из потерянного раздела, и мне нужно отсортировать их или поместить в папку по дате создания EXIF-данных каждого изображения.
Я установил digiKam, а также shotwell, но не нашел способ сделать это на любом из вариантов
Может ли кто-нибудь объяснить мне, как это сделать с любой из этих 2 программ или даже с новой программой для Убутуна 13
Мое любимое решение состоит в том, чтобы установить дату файла так же, как дату фото exif. Делая это, вы можете сортировать файлы с помощью любого инструмента проводника.
apt-get install jhead
) jhead -ft *
. Это установит дату файла в файловой системе с датой создания метаданных exif Если вам удобно использовать командную строку, я рекомендую использовать exiftool. Среди прочего, он делает именно то, что вы пытаетесь сделать. Есть некоторая кривая обучения, но я часами экспериментировал с тестовыми копиями своих фотографий, и я действительно рад, что сделал это. Ссылка: http://www.sno.phy.queensu.ca/~phil/exiftool/ .
Чтобы получить его, откройте Терминал и выполните:
sudo apt-get install exiftool
РЕДАКТИРОВАТЬ: Вот пример команды, которая переименовывает файлы на основе даты создания в формате ГГГГММДД и добавляет в конце порядковый номер. Если вы читаете документацию, есть похожая команда, которая копирует их в новые папки, названные на основе данных exif.
exiftool '-filename<CreateDate' -d %Y%m%d%%-.4nc.%%le -r
Надеюсь, это поможет. Удачи!
Установите пакетный процессор Phatch Photo. Из предопределенных действий выберите тот, который переименовывает файлы с датой из exif.
Простейшее использование: jhead -n%Y/%m/%d/%Y%m%d%H%M /Destination/*.jpg
Он будет сортировать, перемещать и переименовывать все ваши файлы JPG из текущего каталога в красивую структуру каталогов с уникальными именами файлов /Year/Month/Day/YearMonthDayHourMinute.jpg
Работает только на тестовых файлах * .jpg, а не на RAW
Отличным инструментом является Rapid Photo Downloader
Добавление PPA
sudo apt-add-repository ppa:dlynch3/ppa
Обновление и установка
sudo apt-get update
sudo apt-get install rapid-photo-downloader
Используйте «потерянный раздел» в качестве входного источника и настройте целевой путь / имена файлов на основе данных exif в Rapid Photo Downloader
Это код, который я использую. Он переименовывает фотографии, добавляя YYYYMMDD_originalname.jpg
#! /bin/bash
shopt -s globstar || exit
for PIC in **
do
# look only for jpg
if [[ "$PIC" =~ \.JPG$ ]] || [[ "$PIC" =~ \.jpg$ ]]; then
# ignore jpg that have 8 numbers at beginning followed by _ or after IMG_ or P_ and followed by _ (already date stamped)
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
:
else
# get the date and time from the tag
DATE=$(exiftool -p '$DateTimeOriginal' "$PIC" | sed 's/[: ]//g')
echo "file_$PIC"
# customize date, in this case eliminate the time, getting only the date in 8 numbers and adding _
DATEMOD2=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
echo "datemod2_$DATEMOD2"
# check if DateTimeOriginal was present
if [[ "$PIC" == "$DATEMOD2$PIC" ]];then
# as DateTimeOriginal is not present try with HistoryWhen
DATE=$(exiftool -p '$HistoryWhen' "$PIC" | sed 's/[: ]//g')
DATEMOD2B=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
echo "datemod2B_$DATEMOD2B"
# check if HistoryWhen is present
if [[ "$PIC" == "$DATEMOD2B$PIC" ]];then
# nor the tag DateTimeOriginal, nor HistoryWhen present
echo "skip"
else
# this will be done
echo "mv -i "$PIC" $(dirname "$PIC")/"$DATEMOD2B""$PIC""
#uncomment if you like it
#mv -i "$PIC" $(dirname "$PIC")/"$DATEMOD2B""$PIC"
fi
else
# this will be done
echo "mv -i "$PIC" $(dirname "$PIC")/"$DATEMOD2""$PIC""
#uncomment if you like it
#mv -i "$PIC" $(dirname "$PIC")/"$DATEMOD2""$PIC"
fi
fi
fi
done
На основе https://www.tuxradar.com/answers/433 , https://mikebeach.org/ 2011/12/17 / как извлечь exif-данные-из-командной строки-в-ubuntu-linux /
См. Также, http: // davehope .co.uk / Блог / sorting-your-photos-with-bash /
РЕДАКТИРОВАТЬ. В этой модификации дата в теге передается в имя, а также в атрибут даты с помощью touch. Кроме того, если эти теги не существуют, тег даты модификации передается в имя файла.
#! /bin/bash
shopt -s globstar || exit
for PIC in **
do
# look only for jpg
if [[ "$PIC" =~ \.JPG$ ]] || [[ "$PIC" =~ \.jpg$ ]]; then
echo "file_$PIC"
# get the date and time from the tag DateTimeOriginal
DATE=$(exiftool -p '$DateTimeOriginal' "$PIC" | sed 's/[: ]//g')
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
# check if DateTimeOriginal is 0000... OR empty
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
echo "datetimeoriginal_$LONGDATE"
# modify the attribute date with the info in the tag date
touch -t $LONGDATE "$PIC"
# customize date, in this case eliminate the time, getting only the date in 8 numbers and adding _
DATEMOD2=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
echo "datemod2_$DATEMOD2"
# skip renaming if
# 8 numbers at beginning followed by _ or after IMG_ or P_ and followed by _ (already date stamped)
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
:
else
# this will be done
filename=$(basename "$PIC")
echo "$filename"
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2""$filename"\""
#uncomment if you like it
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2$filename"
fi
else
# get the date and time from the tag HistoryWhen
DATE=$(exiftool -p '$HistoryWhen' "$PIC" | sed 's/[: ]//g')
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
# check if Historywhen is 0000... or empty
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
echo "historywhentag_$LONGDATE"
touch -t $LONGDATE "$PIC"
DATEMOD2B=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
echo "datemod2B_$DATEMOD2B"
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
:
else
# this will be done
filename=$(basename "$PIC")
echo "$filename"
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2B""$filename"\""
#uncomment if you like it
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2B$filename"
fi
else
# get the date and time from the tag tag filemodifydate
DATE=$(exiftool -p '$filemodifydate' "$PIC" | sed 's/[: ]//g')
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
# check if filemodifydate is 0000... or empty
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
#echo "filemodifydatetag_$LONGDATE"
#touch -t $LONGDATE "$PIC"
DATEMOD2C=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
echo "datemod2C_$DATEMOD2C"
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
:
else
# this will be done
filename=$(basename "$PIC")
echo "$filename"
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2C""$filename"\""
#uncomment if you like it
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2C$filename"
fi
else
echo "Error, NO date available"
fi
fi
fi
fi
done
Теперь существует расширение под названием nautilus-columns , которое добавляет данные EXIF, а также MP3 (ID3), PDF и другие метаданные. Эти новые столбцы также можно использовать как источник сортировки.
Установить с помощью:
sudo add-apt-repository ppa:atareao/nautilus-extensions sudo apt update sudo apt install nautilus-columns