#1 Le 27/03/2016, à 13:53
- Feral
Extraire emails de *.pdf ? [Resolu]
Bonjour,
Je désirerais extraire les emails contenu dans une grosse centaine de *.pdf classés par sous-répertoires.
Pour les textes la commande suivante fonctionne très bien en récursif:
grep -hrio "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b" * | sort | uniq > email.txt
Donc je pensais pouvoir utiliser un peu la même chose avec pdfgrep puisque grep ne supporte pas les "pdf":
pdfgrep -hri "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b" *.pdf | sort | uniq > pdfemail.txt
Mais cela me donne un fichier vide. :-(
Auriez-vous une méthode qui fonctionne pour moi SVP?
Merci!
Dernière modification par Feral (Le 29/03/2016, à 22:43)
Hors ligne
#2 Le 27/03/2016, à 15:15
- credenhill
Re : Extraire emails de *.pdf ? [Resolu]
hello
essayer
find . -name "*.pdf" -exec cat {} \; | strings | grep -io "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b" * | sort | uniq > email.txt
Hors ligne
#3 Le 28/03/2016, à 05:26
- Feral
Re : Extraire emails de *.pdf ? [Resolu]
Merci mais cela ne fonctione pas. :-(
Ils scan tous les fichiers txt du répertoire et compile les emails.
Si je le fais tourner dans un rep avec test.pdf seulement, il me donne:
find: `cat' terminated by signal 13
Dernière modification par Feral (Le 28/03/2016, à 05:28)
Hors ligne
#4 Le 28/03/2016, à 07:50
- serged
Re : Extraire emails de *.pdf ? [Resolu]
Plutôt que cat utilise less.
Ainsi :
less toto.pdf
t'affiche le fichier toto.pdf de manière plus ou moins formatée. Avec un | derrière, il se comportera comme un filtre.
Essaye :
find . -name "*.pdf" -exec less {} \; | strings | grep -io "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b" * | sort | uniq > email.txt
(pas vérifié le reste du code)
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne
#5 Le 28/03/2016, à 08:25
- credenhill
Re : Extraire emails de *.pdf ? [Resolu]
remplacer cat par less ...
si les fichiers n'ont pas d'espace dans les noms, essayer
$ strings $(find . -type f -name "*.pdf") | grep -io "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b"
Hors ligne
#6 Le 28/03/2016, à 09:12
- LeoMajor
Re : Extraire emails de *.pdf ? [Resolu]
bonjour,
il y a pdftotext
Hors ligne
#7 Le 28/03/2016, à 10:08
- credenhill
Re : Extraire emails de *.pdf ? [Resolu]
mieux que strings, effectivement
edit; donc, essayer
find . -type f -name "*.pdf" -exec pdftotext {} - 2>/dev/null \; | grep -io "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b"
Dernière modification par credenhill (Le 28/03/2016, à 15:43)
Hors ligne
#8 Le 29/03/2016, à 22:43
- Feral
Re : Extraire emails de *.pdf ? [Resolu]
Wahoo...
Merci à tous ça marche bien on dirait, en récurssif et avec des noms avec espace.
find . -type f -name "*.pdf" -exec pdftotext {} - 2>/dev/null \; | grep -io "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b" | uniq | sort > pdfemail.txt
Parfait! Super!!!
Merci!
Hors ligne
#9 Le 29/03/2016, à 22:54
- Feral
Re : Extraire emails de *.pdf ? [Resolu]
Bon ça "uniq" pas et ça "sort" pas mais avec grep derrier ça passe tout seul.
grep -hrio "\b[a-z0-9.-]\+@[a-z0-9.-]\+\.[a-z]\{2,4\}\+\b" * | sort | uniq > email.txt
Merci à tous les 3!
Hors ligne