0 votes

Comment puis-je rechercher le contenu des pièces jointes d'un courriel au format PDF qui sont sauvegardées dans Time Machine ?

Je me trouve donc dans une situation assez particulière où je dois retrouver un vieil e-mail que j'ai sauvegardé dans Time Machine, mais je ne me souviens pas de la date à laquelle je l'ai reçu. Cela pourrait être il y a entre 6 mois et 1 an.

Suivant le conseil ici J'ai exécuté la commande suivante dans le terminal :

find "/Volumes/Time Machine" -name "*.emlx" -exec grep -l "search term" {} \;

Ce qui m'a permis d'obtenir plusieurs milliers de résultats correspondant au "terme de recherche" (l'objet du message).

Le problème est que le contenu du corps de ces messages est identique. C'est le contenu de la pièce jointe, un document PDF, que je dois rechercher pour un terme spécifique.

Comment puis-je effectuer une recherche similaire à celle décrite ci-dessus, mais sur le contenu de la pièce jointe PDF ?

1voto

KenB Points 256

Pour effectuer une recherche dans le contenu d'un PDF incorporé dans un courriel à l'aide de grep, vous êtes confronté à au moins une, voire deux difficultés.

La première est que les fichiers intégrés dans un courrier électronique ne sont pas conservés sous leur forme brute et sont encodés en texte clair pour être transmis dans le message électronique. Le format MIME couramment utilisé est Base64, mais ce n'est pas toujours le cas. Vous trouverez plus de détails sur base64, y compris les méthodes d'encodage/décodage ici : http://en.wikipedia.org/wiki/Base64

En supposant que la pièce jointe ait été encodée en base64, il n'est toujours pas aussi simple de prendre votre chaîne de recherche et de la transformer en une représentation base64, car l'encodage résultant dépend de l'endroit où la chaîne cible apparaît dans la chaîne d'entrée. base64 prend tous les 6 bits du flux d'entrée et les transforme en un caractère de texte brut. En supposant que le document PDF utilise un codage simple de 8 bits pour la chaîne, 3 caractères du PDF se transformeront en 4 caractères codés. Une illustration rapide de la façon dont la position des caractères peut changer les choses :

% echo "123456789" | base64
MTIzNDU2Nzg5Cg==
% echo "0123456789" | base64
MDEyMzQ1Njc4OQo=

Dans le premier exemple, 123 , 456 et 789 se transformer en MTIz , NDU2 y Nzg5 respectivement. Dans le second, les tuples encodés sont 012 => MDEy , 345 => MzQ1 ... etc.

Votre chaîne de recherche peut commencer au début, au milieu ou à la fin de l'un de ces tuples. Si vous recherchez une chaîne suffisamment longue, vous pouvez découper 3 chaînes de recherche à partir du milieu, chacune devant être un multiple de 3 caractères. Par exemple, si je souhaite rechercher la chaîne suivante 123456789 Je pourrais encoder en base64 trois candidats possibles à la recherche : 123456789 , 234567 y 345678 . L'un des encodages de base devrait apparaître dans le fichier PDF encodé si la chaîne de texte en clair 123456789 est présent.

Nous en arrivons maintenant au deuxième grand problème. Nous avons supposé que le contenu non codé du fichier PDF était codé en UTF-8, c'est-à-dire en texte brut. Si vous examinez le contenu d'un fichier PDF réel, vous constaterez qu'il comporte toutes sortes d'encodages internes, notamment des indicateurs de police, du texte encodé en UTF-16 ou UTF-32, etc. Il est fort probable que votre simple phrase de recherche n'apparaisse pas dans les données du PDF exactement comme vous l'attendez. Il peut y avoir du contenu supplémentaire dans le PDF entre les caractères, entre les mots, et il y a aussi des sauts de ligne. Si vous recherchez une phrase qui traverse un saut de ligne, la construction de votre chaîne de recherche cible sera encore plus compliquée.

Il y a d'autres choses que vous pouvez essayer, donc tout n'est pas perdu.

Si vous connaissez le nom du PDF, vous pouvez le rechercher à la place. Le nom du fichier devrait apparaître dans le texte MIME du message électronique en UTF-8 et peut donc faire l'objet d'une recherche.

Vous pouvez aussi avoir de la chance et, au lieu de chercher les courriels, chercher les fichiers PDF. OSX Mail extrait les pièces jointes et les stocke dans un répertoire de téléchargement du courrier. J'utilise Mavericks et Mail v7.3 et mes pièces jointes sont écrites dans des sous-répertoires sous ~/Library/Containers/com.apple.mail.

Par ailleurs, la commande grep recherche une correspondance exacte. Si vous n'êtes pas sûr de l'utilisation des majuscules et des minuscules, vous devez ajouter l'option "-i" pour une recherche insensible à la casse.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X