我的一个文件夹中有 90 个子文件夹。每个子文件夹都包含 pdf 文件。pdf 文件总数接近 2200 个。如何从所有 pdf 文件中提取第 3 到第 10 页?
要从一个 pdf 中提取页面,我使用以下命令。
pdftk *.pdf cat 3-10 output 3-10.pdf
答案1
这一句话(为了方便阅读,分成两行)已经过测试并且在我的系统上运行良好:
find . -name '*.pdf' -type f -exec bash -c \
'pdftk "$0" cat 3-10 output "${0%.pdf}_3-10.pdf"' {} \;
只需在基本文件夹(包含所有子文件夹的文件夹)中打开一个终端窗口,然后复制并粘贴上面给出的整个一行命令。它将:
- 遍历所有子文件夹并识别所有 pdf
- 从每页中提取 3-10 页(使用示例命令)
- 给一个明智的输出文件名:原始名称
_3-10
加上
这应该可以巧妙且经济地实现您的目的......
变化:
你也可以选择不同的输出位置来收集所有已更改的 pdf 文档。例如,您可以创建一个名为的文件夹~/extracted
,并将上面的命令行更改为以下内容:
find . -name '*.pdf' -type f -exec bash -c \
'pdftk "$0" cat 3-10 output "~/extracted/${0%.pdf}_3-10.pdf"' {} \;
因此所有改变的 pdf 文件都会出现在 中~/extracted
。
无限可能 :)。
答案2
您可以使用 qpdf,因为 pdftk 在 ubuntu bionic 上不再默认可用:
find . -name '*.pdf' -type f -exec bash -c 'qpdf --empty --pages "$0" 3-10 -- "temp/${0%.pdf}_1.pdf"' {} \;
这会将新的 pdf 放入临时文件夹。