Je sais que je peux convertir les fichiers pdf en fichiers texte un par un comme ceci:
$ pdftotext filename.pdf
Mais existe-t-il une seule commande qui ferait cette conversion sans spécifier de noms de fichiers séparés afin de les convertir tous?
Je vois ici, sur Wikipedia , que "les caractères génériques (*), par exemple $ pdftotext * pdf, pour convertir plusieurs fichiers, ne peuvent pas être utilisés car pdftotext n'attend qu'un seul nom de fichier."
xargs
est souvent une solution rapide pour exécuter la même commande plusieurs fois avec juste un petit changement à chaque fois. L'-n1
option garantit qu'un seul fichier pdf est transmis à pdftotext à la fois.Edit: Si vous vous inquiétez des espaces dans les noms de fichiers et autres, vous pouvez utiliser cette alternative:
la source
ls *.pdf | xargs -L1 -I% pdftotext % %.txt
écrire un script bash
ou saisissez-le dans une commande sur 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 .pdfs pour tester cela, mais j'utilise cette stratégie pour convertir mes fichiers .flac en fichiers .ogg.
la source
Je dois d'abord remercier Sam et Ryan Thompson ainsi que tous les autres répondeurs - car ma réponse ici n'est rien d'autre qu'une variation relative à la possibilité d'ajouter leurs solutions aux actions personnalisées de Thunar:
ainsi, comme toute commande de terminal, une commande pour convertir en texte tous les fichiers pdf d'un dossier peut être placée dans la liste des actions personnalisées dans le gestionnaire de fichiers Thunar
La commande qu'il y a
find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
, (venant de Ryan Thompson ), c'est celle que je préfère utiliser, mais elle a un tour méchant ... voir ci-dessous ...... c'est une commande amusante, à utiliser avec précaution: elle est faite pour convertir en texte tout le pdf dans le dossier où elle est tirée, donc, si elle est tirée par erreur dans le dossier d'accueil, elle aura des 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 et dedans 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 fichiers PDF en celui dans dossier "i".)(Je serais heureux de recevoir des commentaires sur la façon 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
) venant de Sam , le problème est évité.Mais dans certains cas, on pourrait souhaiter exactement ce que fait la solution de Ryan!
la source
find
recherche de commandes dans les sous-répertoires en utilisant-maxdepth 1
. De plus, lorsque vous le mettez dans la fonction d'actions personnalisées de Thunar, vous devez probablement le remplacerfind .
parfind %F
pour permettre à Thunar de passer correctement les chemins des répertoires sélectionnés.Celui-ci génère sample.pdf.txt .
J'ai essayé d'utiliser celui-ci, comme le suggère user2357111317 et j'inclus également -layout pour préserver la mise en page du texte
la source