我有成千上万个以以下格式命名的PDF文件
Author Year Title of the book
前两个空格是相关的:它们在作者,年份和标题之间进行了分隔。标题可以包含多个空格。我正在寻找一个脚本来将作者写到PDF中的author meta字段中;标题的标题,年份的元数据。Exiftool似乎是我研究过的所有工具中最有前途的。
你们能帮我吗?
一些EXIF操纵工具具有基于EXIF数据的重命名文件的内置方法,但我不知道一种方法可以反过来进行。因此,让外壳使用文件名的正确部分来调用程序。这是一个仅处理一个文件的脚本(将名称作为脚本的唯一参数传递)。
#!/bin/sh
title=${1##*/}
author=${title%% *}; title=${title#* }
year=${title%% *}; title=${title#* }
exiftool -Author="$author" -Title="$title" -CreateDate="$year" "$1"
说明:我使用参数扩展构造来执行一些基本的字符串处理:将基本名称(在last后面/
)放入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
' _ {} +
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句