使用 Exiftool 或 PDFtk 从文件名写入 PDF 元数据

使用 Exiftool 或 PDFtk 从文件名写入 PDF 元数据

我有数千个以该格式命名的 PDF 文件

Author Year Title of the book

前两个空格是相关的:它们在作者、年份和标题之间进行了分隔。标题可以包含多个空格。我正在寻找一个脚本来编写作者作者PDF 中的元字段;标题到标题,年份到年份元数据。 Exiftool 似乎是我见过的所有工具中最有前途的。

你们能帮我吗?

答案1

一些 EXIF 操作工具有一种内置方法可以根据 EXIF 数据重命名文件,但我不知道有哪个工具可以反过来执行此操作。因此,让 shell 使用文件名的正确部分来调用程序。这是一个仅处理一个文件的脚本(将名称作为脚本的唯一参数传递)。

#!/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
' _ {} +

相关内容