用于批量修剪pdf文件的bash脚本

用于批量修剪pdf文件的bash脚本

我的目录中有多个 pdf 文件。我想利用一个 pdf 库将某些页面保存在一个新文件中,可能是一个单独的输出文件夹。

最好的方法是什么?

这是我编写的代码,但需要更多补充。

#!/bin/bash
# Saves 1st 4 pages or every pdf file to a new file.

for i in *.pdf; do


pdfcpu trim -pages "1-4" ${i}.pdf output ${i + %}.pdf


done

这段代码无法运行,但我已经达到了这个水平。我的问题,

  1. 如何迭代每个文件
  2. 仅将前 4 页保存在另一个文件夹中。

我正在使用的库是中央处理器, 具体来说它的trim功能

答案1

你很接近。

#! /bin/bash -

shopt -s nullglob

mkdir -p trimmed || exit

ret=0
for file in ./*.pdf; do
  pdfcpu trim -pages 1-4 "$file" "trimmed/$file" || ret="$?"
done
exit "$ret"
  • 使用 glob 时,最好使用前缀./来避免以-.
  • 在 bash/sh 中,参数扩展必须加引号。
  • 在 bash/sh 中,如果 glob 不匹配,则模式将按原样传递给命令。在 bash 中,您可以使用shopt -s nullglob(或failglob使用不同的效果)解决该错误功能。
  • $i在你的循环中包含完整的文件名,包括.pdf扩展名。使用${i}.pdf,您最终会得到两个扩展名,并且pdfcpu无法找到相应的file.pdf.pdf文件。
  • ${i + %}没有任何意义。我不清楚你想以此实现什么目标。如果您希望$file==的输出文件名file.pdftrimmed/file%.pdf,则可以将其"trimmed/${file%.pdf}%.pdf"作为输出文件路径传递。
  • 根据手册,你不应该在output那里。
  • 记住要注意失败以及发生失败时该怎么做。在这里,如果任何pdfcpu命令失败,我们将继续执行其余命令,但我们会在脚本的退出状态中报告它们的失败。

相关内容