2010-10-16 13 views
2

J'ai une série de fichiers PDF (Computer Gaming World issues) et je souhaite supprimer la première page du fichier pdf de chaque numéro. Il y a 100 problèmes, donc une interface graphique ne suffit pas. Je pdftk pour enlever la première page d'un numéro:Supprimer la première page d'une série de fichiers PDF

pdftk 1981_1112_issue1.pdf cat 1 output 1.pdf 

Mon problème est que je ne veux pas avoir à modifier et exécuter cette commande pour tous les problèmes de pdf que ce n'est pas beaucoup mieux que la méthode de l'interface graphique. L'utilisation de * .pdf comme entrée ne semble pas fonctionner. Quels autres moyens puis-je utiliser pour exécuter pdftk sur chaque PDF?

+0

Y a-t-il un motif dans la dénomination des problèmes? – mouviciel

+0

Pas exactement ... vous remarquerez que l'année est le premier terme du nom de fichier, et les années varient certainement. Mais je pourrais facilement renommer en masse ... –

+0

Est-ce que tous les fichiers ont "problème" dans leur nom? – mouviciel

Répondre

4

Boucle sur tous les problèmes. La sortie est nommée après le problème en remplaçant "issue" par "output". La première ligne extrait la page 1, la deuxième ligne extrait les autres pages:

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

Oh, je vois comment cela fonctionne. J'ai fait de la programmation mais je n'ai pas réalisé comment les variables fonctionnaient dans bash. Que faites-vous exactement avec $ {issue/issue/output}? –

+0

$ {a/b/c} remplace la sous-chaîne b par la sous-chaîne c dans le contenu de la variable a. – mouviciel

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

J'aime cette réponse pour sa simplicité. La ligne shopt est-elle nécessaire? –