Je sais que je peux convertir des fichiers PDF en fichiers texte un par un, comme ceci:
$ pdftotext filename.pdf
Mais existe-t-il une seule commande permettant d'effectuer cette conversion sans spécifier de noms de fichiers distincts afin de les convertir tous?
Je vois ici sur Wikipedia , que "les caractères génériques (*), par exemple $ pdftotext * pdf, pour la conversion de plusieurs fichiers, ne peuvent pas être utilisés car pdftotext n'attend qu'un seul nom de fichier".
Ce qui suit convertira tous les fichiers du répertoire actuel:
for file in *.pdf; do pdftotext "$file" "$file.txt"; done
ls *.pdf | xargs -n1 pdftotext
xargs
est souvent une solution rapide pour exécuter la même commande plusieurs fois avec juste une petite modification à chaque fois. L'option -n1
permet de s'assurer qu'un seul fichier PDF est transmis à pdftotext à la fois.
Edit: Si vous êtes inquiet à propos des espaces dans les noms de fichiers, vous pouvez utiliser cette alternative:
find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
écrire un script bash
for f in *.pdf; do
pdftotext "$f"
done
ou tapez-le dans une commande d'une ligne comme suit:
for f in *.pdf; do pdftotext "$f"; done
J'espère que ça aide. Je n'ai pas un grand groupe de fichiers .pdfs pour le tester, mais j'utilise cette stratégie pour convertir mes fichiers .flac en fichiers .ogg.
for file in *.pdf; do pdftotext "$file" "$file.txt"; done
Celui-ci affiche sample.pdf.txt.
J'ai essayé d'utiliser celui-ci, comme le suggère l'utilisateur2357111317 et d'inclure également - layout pour préserver la mise en page du texte
for file in *.pdf; do pdftotext -layout "$file"; done
Je dois tout d'abord remercier Sam et Ryan Thompson ainsi que tous les autres répondants - car ma réponse n'est rien d'autre qu'une variante de la possibilité d'ajouter leurs solutions à Actions personnalisées de Thunar:
ainsi, comme toute commande de terminal, une commande permettant de convertir en texte tous les fichiers pdf d'un dossier peut être insérée dans la liste des actions personnalisées dans le gestionnaire de fichiers Thunar.
La commande ici est find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
, (venant de Ryan Thompson ). C’est celle que je préfère utiliser, mais elle tourne mal ... voir ci-dessous ...
... c’est une commande amusante, à utiliser avec précaution: il est fait pour convertir en texte tous les pdf dans le dossier où il est déclenché, donc, s’il est déclenché par erreur dans le dossier de départ, il aura des effets indésirables effets: tous vos fichiers PDF seront convertis en texte!
(Je l'ai testé comme ceci: j'ai créé un dossier appelé "test" sur le bureau contenant un fichier pdf et une série de dossiers dans des dossiers (/Desktop/test/a/b/c/e/f/g/h/i
) contenant chacun le même pdf. L'exécution de cette commande dans /Desktop/test
a converti tous les pdfs en que dans le dossier "i".)
(Je souhaiterais recevoir des commentaires sur la manière d'ajuster cette commande afin d'éviter ce risque.)
En remplaçant cela par l'autre (for file in *.pdf; do pdftotext "$file" "$file.txt"; done
) provenant de Sam , le problème est évité.
Mais dans certains cas, on peut souhaiter exactement ce que la solution de Ryan fait!