2010-10-16 28 views
2

我有一系列PDF(Computer Gaming World issues),我想从每个问题的pdf文件中删除第一页。有100个问题,所以GUI不会削减它。我用PDFTK从一个问题删除第一页:从一系列PDF中删除第一页

pdftk 1981_1112_issue1.pdf cat 1 output 1.pdf 

我的问题是,我不希望有修改,并为每一个PDF问题上运行这个命令,是不是比GUI方法要好得多。

使用* .pdf作为输入似乎不起作用。我可以使用哪些其他方式在每个PDF上运行pdftk?

+0

在命名问题中是否存在模式? – mouviciel 2010-10-16 09:00:30

+0

不完全是......你会注意到年份是文件名中的第一项,而且年份肯定不一样。但我可以轻松地批量重命名... – 2010-10-16 09:03:10

+0

所有的文件都有“问题”在他们的名字? – mouviciel 2010-10-16 09:05:54

回答

4

在所有问题上循环。输出是通过用“输出”替换“问题”来命名的。第一行提取页面1,第二行提取其他页面:

for issue in *_issue*.pdf 
do 
    pdftk ${issue} cat 1 output page1_${issue/issue/output} 
    pdftk ${issue} cat 2-end output otherpages_${issue/issue/output} 
done 
+0

哦,我看到这是如何工作的。我已经做了一些编程,但我没有意识到变量在bash中是如何工作的。你到底在做什么?{issue/issue/output}? – 2010-10-16 09:39:27

+0

$ {a/b/c}将b子串替换为变量内容中的c子串。 – mouviciel 2010-10-16 10:13:16

0
shopt -s nullglob 
for file in *.pdf 
do 
out=${file%.pdf}_page1.pdf 
pdftk "$file" cat 1 output "$out" 
done 
+0

我喜欢这个直接的答案。是否需要购物线? – 2010-10-16 09:44:48