Как настроить временную метку Exif фотографии, используя дату в ее имени

Постройте шаблон из списков слов. Из file1.txt, содержащего, например, one, un, eins и file2. txt, содержащий two, deux, zwei, необходимо получить регулярное выражение (в синтаксисе ERE)

(one|un|eins).*(two|deux|zwei)

Если списки слов не содержат специальных символов в regex, то достаточно заменить новые строки на | (оператор "или"), кроме последней.

words1=$(tr '\n' '|' <file1.txt); words1=${words1%\|}
words2=$(tr '\n' '|' <file2.txt); words2=${words2%\|}
grep -E "($words1).*($words2)"

Если списки слов могут содержать специальные символы, то их нужно заключить в кавычки.

words1=$(<file1.txt tr '\n' '|' | sed 's/[][\\().*?+|]/\\&/g'); words1=${words1%\|}
words2=$(<file2.txt tr '\n' '|' | sed 's/[][\\().*?+|]/\\&/g'); words2=${words2%\|}
grep -E "($words1).*($words2)"

Обратите внимание, что если вам не важен порядок слов и вы можете принять перекрывающиеся совпадения (например, принять twone как содержащий и one и two), то все, что вам нужно, это два вызова grep:

grep -f file1.txt | grep -f file2.txt
1
16.09.2017, 22:20
1 ответ

Да, используйте exiftool . В Debian/Ubuntu это можно установить с помощью

sudo apt install libimage-exiftool-perl

Что-то вроде этого должно работать (при условии, что ***показывает время):

exiftool "-datetimeoriginal<filename" Screenshot_YYYYMMDD-HHMMSS.png

exiftool самостоятельно определяет формат даты, вы можете посмотреть текущие метаданные EXIF ​​(и некоторые другие, просто вызвав инструмент с именем файла:

exiftool Screenshot_YYYYMMDD-HHMMSS.png

Если у вас есть имя файла, которое не может быть автоматически прочитано exiftool, вы можете использовать параметр -d, чтобы прояснить ситуацию для exiftool. Опять же, для вашего примера:

exiftool "-datetimeoriginal<filename" -d Screenshot_%Y%m%d-%H%M%S Screenshot_YYYYMMDD-HHMMSS.png
2
27.01.2020, 23:44

Теги

Похожие вопросы