Запишите метаданные PDF из имени файла с помощью Exiftool или PDFtk

При регистрации с новым сеансом ssh вы можете использовать что-то вроде tmux attach -d || tmux new для присоединения любого существующего сеанса tmux или создания нового сеанса, если сеансов tmux не существует. Хотя это не предотвратит запуск сеанса tmux в фоновом режиме при обрыве соединения ssh, это предотвратит накопление этих заброшенных сеансов.

1
28.02.2016, 19:41
1 ответ

Некоторые инструменты для работы с EXIF имеют встроенный способ переименования файлов на основе данных EXIF, но я не знаю ни одного, который мог бы делать это наоборот. Так что пусть оболочка вызывает программу с нужными частями имен файлов. Вот сценарий, который обрабатывает только один файл (передайте имя как единственный аргумент сценария).

#!/bin/sh
title=${1##*/}
author=${title%% *}; title=${title#* }
year=${title%% *}; title=${title#* }
exiftool -Author="$author" -Title="$title" -CreateDate="$year" "$1"

Объяснение: Я использую конструкции расширения параметров для базовой обработки строк: поместите базовое имя (после последнего /) в title; поместите часть до первого пробела в author и удалите ее из title; повторите с годом.

Чтобы обработать все файлы в каталоге, поместите этот код в цикл.

#!/bin/sh
for filename in *\ *\ *.pdf; do
  title=${filename##*/}
  author=${title%% *}; title=${title#* }
  year=${title%% *}; title=${title#* }
  exiftool -Author="$author" -Title="$title" -CreateDate="$year" "$filename"
done

Для рекурсивной обработки всех файлов в каталоге и его подкаталогах используйте find.

find /path/to/top/directory -name '* * *.pdf' -type f -exec sh -c '
  for filename do
    …
  done
' _ {} +
0
28.01.2020, 01:24

Теги

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