J'ai beaucoup PDF fichiers sur un dossier.
Est-il possible de vérifier si un ou plusieurs fichiers sont corrompus (zéro pages ou téléchargements inachevés) à l'aide de la ligne de commande, sans avoir besoin de les ouvrir une par une?
find . -iname '*.pdf' | while read -r f
do
if pdftotext "$f" - &> /dev/null; then
echo "$f" was ok;
else
mv "$f" "$f.broken";
echo "$f" is broken;
fi;
done
Mon outil de choix pour vérifier les PDF est qpdf
. qpdf
a un --check
argument qui fait bien trouver des problèmes dans les PDF.
qpdf
:qpdf --check test_file.pdf
qpdf
:find ./directory_to_scan/ -type f -iname '*.pdf' \( -exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \; -o -exec echo "{}": FAILED \; \)
Explication de la commande:
find ./directory_to_scan/ -type f -iname '*.pdf'
Trouvez tous les fichiers avec '.pdf' extension
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
Exécuter qpdf
pour chaque fichier trouvé et tuyer toutes les sorties à /dev/null
. Également imprimer le nom de fichier suivi de ': OK' si l'état de retour de qpdf
est 0 (c'est-à-dire aucune erreur)
-o -exec echo "{}": FAILED \; \)
Ceci est exécuté si des erreurs sont trouvées: Imprimer le nom de fichier suivi de ": échoué"
qpdf
:qpdf
a les binaires Linux et Windows disponibles à l'adresse suivante: - https://github.com/qpdf/qpdf/relases . Vous pouvez également utiliser votre responsable de votre forfait de choix pour l'obtenir. Par exemple sur Ubuntu, vous pouvez installer QPDF à l'aide de APT avec la commande:
apt install qpdf
Je me suis eu une réponse:
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
Les PDF avec des erreurs montreront des erreurs.