我有几本电子书并不总是以书名命名。是否可以使用bash命令来阅读pdf的第一页(并执行一个简单的grep等)并相应地重命名该文件?
感谢
-a
答案 0 :(得分:3)
Poppler Library提供了一组命令行工具,用于从PDF文件中提取文本和元数据。
要提取元数据,您可以使用pdfinfo
例如
:~> pdfinfo ProAdminGuide.pdf 2>/dev/null | \
grep Title: | sed 's/Title:[ ]*//'
输出
Professional Administrator’s Guide
有时PDF文件不包含完整的元数据。在这种情况下,您可以试试运气从标题页的文本中提取标题。要提取标题页的文本,您可以使用pdftotext
:~> pdftotext ProAdminGuide.pdf - | head -3
输出
A division of
Professional Administrator’s Guide, published by
在任何情况下,首先检查您是否可以在自动重命名之前从pdf文件中提取标题
for book in *.pdf ; do
title=$(pdfinfo "$book" 2>/dev/null | grep Title: | sed 's/Title:[ ]*//')
[[ "$title" ]] || continue
mv "$book" "${title}.pdf"
done
编辑在评论中添加了一个由Charles Duffy建议的好习惯用作预防措施