Intereting Posts

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

У меня есть тысячи PDF-файлов, названных в формате

Author Year Title of the book 

Первые два пространства имеют значение: они создают разрыв между Автором, годом и названием. Название может содержать пробел. Я ищу сценарий для написания автора в мета-поле автора в PDF; название для названия и метаданные года к году. Exiftool кажется наиболее перспективным из всех инструментов, на которые я смотрел.

Можете ли вы, ребята, помочь мне?

Некоторые средства управления 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 ' _ {} +