Rosika
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1355
|
Hallo zusammen, ich habe an verschiedenen Orten Ordner, die PDFs enthalten. Oftmals suche ich nach einem bestimmten Stichwort, weiß aber nicht, in welchem der PDF-Dokumente ich suchen soll. Ich kenne lediglich den betreffenden Ordner. Natürlich könnte ich jedes PDF einzeln öffnen und mit der Suchfunktion suchen.
Ich dachte aber, das kann man doch sicher besser lösen. Deshalb versuchte ich, das Problem mithilfe eines Skripts zu lösen: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
#!/bin/bash
# Dieses skript sucht nach bestimmten Wörtern in einer Reihe von PDFs
read -p "Bitte geben Sie den Ordner-Pfad ein: " pfad # Eingabe de Pfads
read -p "Bitte geben Sie das Suchwort ein: " search # Eingabe des Suchwortes
echo "neue Suchergebnisse für pdf_search: Suchwort: $search " > /home/rosika/Dokumente/interne_Verwaltung/kgw_Ausgabe_für_pdf_search_skript.txt
for var in "$pfad"/*.pdf ; do
pdfname=$(basename "$var")
echo >> /home/rosika/Dokumente/interne_Verwaltung/kgw_Ausgabe_für_pdf_search_skript.txt
echo "-----------------------------------------------------------------------------------------------------------------" >> /home/rosika/Dokumente/interne_Verwaltung/kgw_Ausgabe_für_pdf_search_skript.txt
echo "gefunden in: $pdfname" >> /home/rosika/Dokumente/interne_Verwaltung/kgw_Ausgabe_für_pdf_search_skript.txt
echo >> /home/rosika/Dokumente/interne_Verwaltung/kgw_Ausgabe_für_pdf_search_skript.txt
pdftotext $var - | grep -i "$search" >> /home/rosika/Dokumente/interne_Verwaltung/kgw_Ausgabe_für_pdf_search_skript.txt
done
firejail gedit /home/rosika/Dokumente/interne_Verwaltung/kgw_Ausgabe_für_pdf_search_skript.txt
|
Am Ende gibt mir also gedit die Suchergebnisse aus.
Ich habe das skript getestet, und es läuft auch eigentlich so wie es soll. Nur eines gefällt mir noch nicht: Die gefundenen Ergebnisse innerhalb einer PDF-Datei erscheinen mir etwas unübersichtlich. Da wäre es gut, wenn
man eine Leerzeile zwischen der Anzeige einer jeden Fundstelle einschieben könnte. Aber genau das bekomme ich irgendwie nicht hin. Kann mir dabei jemand helfen? Vielen Dank im voraus. LG.
Rosika 😳
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Eine Konvertierung ist nicht notwendig, siehe pdfgrep.
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1355
|
Hallo mrkramps, danke für Deine Antwort. pdfgrep müsste ich halt´ nachinstallieren, da es nicht in meinem Lubuntu enthalten ist.
Das wäre jetzt kein Problem, aber irgendwie hat mich der Ehrgeiz gepackt, das mit einem Skript zu lösen. Das klappt ja auch, wie gesagt, bis auf die etwas unübersichtliche Darstellung. Mit einer Leerzeile zwischen den einzelnen
Ergebnissen wäre es schon besser. LG Rosika
|
STRAGIC-IT
Anmeldungsdatum: 3. Januar 2006
Beiträge: 3242
Wohnort: Fürth
|
Hallo Rosika,
es gibt dazu ein sehr gutes Programm, das noch viel mehr kann. Das Programm setzen wir produktiv bei Kunden ein, die über 1 Mio. Dokumente durchforsten müssen. Suche nach DOCFETCHER. Bye
HS
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Siehe Wiki-Artikel DocFetcher.
|
swkh
Anmeldungsdatum: 10. April 2015
Beiträge: 610
|
STRAGIC-IT schrieb: Hallo Rosika,
es gibt dazu ein sehr gutes Programm, das noch viel mehr kann.
Es gibt dafür mindestens noch ein weiteres sehr gutes Programm, das noch viel mehr kann: Recoll https://wiki.ubuntuusers.de/Recoll/
|
coram
Anmeldungsdatum: 17. Januar 2015
Beiträge: 645
Wohnort: Freiburg
|
Rosika schrieb: Nur eines gefällt mir noch nicht: Die gefundenen Ergebnisse innerhalb einer PDF-Datei erscheinen mir etwas unübersichtlich. Da wäre es gut, wenn
man eine Leerzeile zwischen der Anzeige einer jeden Fundstelle einschieben könnte. Aber genau das bekomme ich irgendwie nicht hin.
Hierfür böte sich (in Zeile 15) awk an:
| pdftotext $var - | grep -i "$search" | awk '{print $0,"\n"}' >> /home/rosika/Dokumente/interne_Verwaltung/kgw_Ausgabe_für_pdf_search_skript.txt
|
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1355
|
Hallo coram, allerherzlichsten Dank für die Lösung. Das ist genau das, wonach ich gesucht habe. Da ich immer etwas dazulernen möchte: 😉 Verstehe ich das richtig? Der Text der zu untersuchenden PDF-Datei wird durch pdftotext als Text wiedergegeben und auf stdout "geschrieben", dann mit grep bzgl. des Suchwortes gefiltert. Soweit hatte ich´s. Dann druckt print mit $0 die ganze Zeile aus und fügt mit \n eine neue (Leer)-Zeile ein bevor das nächste Suchergebnis ausgegeben wird..... Vielen Dank nochmals für die großartige Hilfe. LG.
Rosika ☺
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1355
|
@ swkh, @ mrkramps, @ STRAGIC-IT, vielen Dank für Eure Antworten. recoll hatte ich auch schon in Betracht gezogen und danach recherchiert. Dabei hieß es irgendwo, daß die Indexdateien, die recoll erstellt u.U. genauso viel Platz in Anspruch nehmen können wie das Original selbst. D.h. also, daß - falls ich das ganze home-Verzeichnis indizieren lasse - nochmal soviel Platz verbrauche. Das ist man dann doch etwas zu "teuer" bezahlt. 😮 Was DocFetcher anbelangt: Hier muß man auch Ordner indizieren. Ob das sich genauso wie bei recoll verhält? Auf jeden Fall ist´s eine Überlegung wert. Danke nochmals. LG. Rosika
|
swkh
Anmeldungsdatum: 10. April 2015
Beiträge: 610
|
Rosika schrieb:
recoll hatte ich auch schon in Betracht gezogen und danach recherchiert. Dabei hieß es irgendwo, daß die Indexdateien, die recoll erstellt u.U. genauso viel Platz in Anspruch nehmen können wie das Original selbst.
Der Ordner "Dokumente" hat in meinem Fall eine Größe von 306 GiB; die von Recoll angelegte Datenbank umfaßt 4 GiB. Ich halte diese Relation für unkritisch. Im Übrigen kann man sehr präzise festlegen, welche Dateien beim Indexlauf einbezogen werden sollen. Recoll ist auch angenehm schnell. Die Indexdateien habe ich auf einer SSD abgelegt.
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1355
|
Hi swkh, danke für die erneute Rückmeldung. Meine "Dokumente" sind 17,8 GB groß. Demnach müßte die Datenbank also ca. 0,23 GB groß werden. Das hört sich gut
an. Leider weiß ich nicht mehr, wo ich die Aussage bzgl. großen Speicherbedarfs für recoll gelesen habe. Danach hatte ich die Idee nämlich
wieder verworfen....
Nun kommt´s anscheinend doch wieder in Frage. Danke für Deine Erfahrungswerte. 👍 Weißt Du übrigens, in welchem Verzeichnis sich die Indexdatei befindet? LG Rosika
|
swkh
Anmeldungsdatum: 10. April 2015
Beiträge: 610
|
Die Indexdateien befinden sich in dem versteckten Ordner ~/.recoll/xapiandb. Was den Platzbedarf betrifft: Ich würde es einfach auf einen Versuch ankommen lassen und mit einem bestimmten Ordner einen Indexlauf durchführen. Danach ist man schlauer. 😉
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1355
|
Danke swkh für die Info. Ich habe recoll jetzt mal probehalber in meiner VM (bodhi linux) installiert und suche dort nach ~/.recoll/xapiandb. Mal sehen, welche Info ich dort über den Platzbedarf bekomme. LG.
Rosika
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1355
|
@ swkh: Ich habe jetzt im meiner VM nachgesehen: Bei bodhi linux habe ich ein home-Verzeichnis in der Größe von 3481 MB. Hier schlägt /home/rosika/.recoll/xapiandb mit 439 MB zu Buche. Das würde bedeuten, daß bei meinem Produktivsystem (Lubuntu) mit der Größe von /home/rosika 27238 MB folgende /home/rosika/.recoll/xapiandb generiert werden würde: 3432 MB. Nun, ich denke: auf eine solch gute Relation wie Du, komme ich leider nicht. Keine Ahnung, woran das liegt. Dennoch danke für Deine Hilfe. ☺ LG.
Rosika
|
swkh
Anmeldungsdatum: 10. April 2015
Beiträge: 610
|
Recoll ist gut dokumentiert: https://www.lesbonscomptes.com/recoll/usermanual/webhelp/docs/RCL.INTRODUCTION.RECOLL.html Dort heißt es z.B.:
The Xapian index can be big (roughly the size of the original document set) ...
was nicht weiter verwundert, wenn es sich ausschließlich um Text-Dateien handelt und jeder in einer Datei vorkommende Begriff einzigartig ist und als solcher indexiert wird. Anders gesagt: Man sollte sich vorher überlegen, welche Ordner, Unterordner, Dateitypen etc. bei dem zu erstellenden Index berücksichtigt werden sollen und welche außen vor bleiben. Den kompletten Home-Ordner als Grundlage zu wählen, scheint mir keine gute Idee. In meinem Fall handelt es sich um einen einzigen Ordner - nämlich "Dokumente" - und in diesem sind es insbesondere Textlastige Dateien (vor allem .pdf), deren kryptische Dateinamen kaum Hinweise auf ihren konkreten Inhalt liefern, z.B. archivierte Kontoauszüge, Rechnungen etc. Diese waren übrigens auch für mich der Anlass, mich mit Recoll zu beschäftigen; ich fand es einfach menschenunwürdig, bei der Zusammenstellung der Belege für die jährliche Steuererklärung jeden Kontoauszug einzeln manuell nach einem bestimmten Begriff durchsuchen zu müssen. Das kann mein Rechner besser, weil geduldiger und schneller. Zum Spaß habe ich auch noch sämtliche Rezepte auf diese Weise "archiviert" und kann so feststellen, welche Suppe mit Chorizo verfeinert werden kann, was sogar noch mehr Spaß macht als Steuerkram. 😉
|