J'utilise Opensuse 10.3 et j'aime connaître les outils de ligne de commande pour rechercher des expressions dans un grand nombre de fichiers pdf dans un répertoire. Sous Windows XP, la recherche dans l'explorateur le permet mais est trop lente. Y a-t-il des conseils grep ici?
search
grep
windows-search
iceman
la source
la source
Réponses:
la source
Sous Linux et Windows, vous pouvez utiliser Acrobat Reader, qui a une commande pour rechercher plusieurs fichiers.
Sous Linux, il y a Recoll, qui construira un index de vos fichiers pdf (et plus) la première fois que vous l'exécuterez. Une fois l'index construit, les recherches de mots doivent être très rapides; les recherches de phrases doivent être raisonnables. Assurez - vous que la
pdftotext
commande est installé avant de commencer Recoll; sous Debian et Ubuntu, c'est dans lepoppler-utils
paquet, je ne sais pas pour Suse.Ou vous pouvez directement convertir les fichiers en texte et utiliser grep sur les fichiers texte avec les commandes ci-dessous.
la source
pdftotext
(dont les outils tels que Recoll feront automatiquement).Adobe Reader X fait le travail et il ne permet la recherche dans un répertoire entier et les sous - répertoires, non seulement dans un fichier, mais il est pas un programme de ligne de commande.
la source
recoll
installé sur Debian à la main, essayant maintenant de le rendre utilisable pour mes employés Windows.Pour lister récursivement tous les fichiers de votre répertoire personnel qui ont l'extension de fichier PDF et qui contiennent une ligne qui correspond à l'expression régulière '
[iI]n Haskell
' par exemple, vous pouvez émettre:Remarques:
-exec
ouxargs
parce que, pour des raisons de sécurité , je pense que c'est une bonne pratique de prendre l'habitude de le faire. Changer '-execdir
' en '-exec
' et '$PWD${0#?}
' en '$0
' devrait obtenir le même résultat dans ce cas../
'). Dans cet exemple, les chemins mis en correspondance sont tous absolus (c'est-à-dire commencent par '/
') car '~/
' est étendu au chemin absolu du répertoire personnel de l'utilisateur actuel, et c'est le seul argument de chemin.$0
' et '$1
' sont des paramètres positionnels utilisés de manière à citer correctement les arguments. Si cela n'est pas fait correctement, la commande est vulnérable aux noms de fichiers arbitraires.${0#?}
' supprime le premier caractère de$0
, c'est-à-dire le '.
'.Pour imprimer chaque ligne correspondante, procédez par le nom de fichier:
Cette variante utilise '
-H
' au lieu de '-l
' et les étiquettes avec nom de fichier plutôt que chemin de fichier. '${0:2}
' supprime les deux premiers caractères de$0
, c'est-à-dire le './
', mais il n'est apparemment pas reconnu parsh
.Bien sûr, ajustez vos besoins.
la source