我有数千个以该格式命名的 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
' _ {} +