Ich verwende Opensuse 10.3 und möchte Kommandozeilen-Tools kennen, um Phrasen in einer großen Anzahl von PDF-Dateien in einem Verzeichnis zu suchen. In Windows XP erlaubt die Explorer-Suche dies, ist aber zu langsam. Gibt es hier grep Tipps?
search
grep
windows-search
Eismann
quelle
quelle
Antworten:
quelle
Sowohl unter Linux als auch unter Windows können Sie Acrobat Reader verwenden, der über einen Befehl zum Durchsuchen mehrerer Dateien verfügt.
Unter Linux gibt es Recoll, das beim ersten Ausführen einen Index Ihrer PDF-Dateien (und mehr) erstellt. Nachdem der Index erstellt wurde, sollte die Wortsuche sehr schnell sein. Phrasensuche sollte vernünftig sein.
pdftotext
Stellen Sie sicher, dass der Befehl installiert ist, bevor Sie Recoll starten. Unter Debian und Ubuntu ist es impoppler-utils
Paket, ich weiß nichts über Suse.Oder Sie können die Dateien direkt in Text konvertieren und mit den folgenden Befehlen grep für die Textdateien verwenden.
quelle
pdftotext
(welche Tools wie Recoll automatisch ausführen).Adobe Reader X macht den Job und es tut Suche unter einem ganzen Verzeichnis ermöglichen und Verzeichnissen, nicht nur innerhalb einer Datei, aber es ist nicht ein Kommandozeilenprogramm.
quelle
recoll
auf debian handlich installiert und versucht nun, es für meine Windows-basierten Mitarbeiter nutzbar zu machen.Um rekursiv alle Dateien in Ihrem Home-Verzeichnis aufzulisten, die die PDF-Dateierweiterung haben und eine Zeile enthalten, die
[iI]n Haskell
beispielsweise dem regulären Ausdruck ' ' entspricht, können Sie Folgendes ausgeben:Bemerkungen:
-exec
oder vermieden wird,xargs
weil ich aus Sicherheitsgründen denke, dass es eine gute Praxis ist, sich daran zu gewöhnen. Das Ändern von '-execdir
' in '-exec
' und '$PWD${0#?}
' in '$0
' sollte in diesem Fall das gleiche Ergebnis erzielen../
') ausgegeben werden . In diesem Beispiel sind die Pfade, mit denen abgeglichen wird, alle absolut (dh beginnen mit '/
'), da '~/
' auf den absoluten Pfad des Ausgangsverzeichnisses des aktuellen Benutzers erweitert wird und dies das einzige Pfadargument ist.$0
' und '$1
' sind Positionsparameter, die so verwendet werden, dass die Argumente korrekt zitiert werden. Wenn dies nicht ordnungsgemäß ausgeführt wird, ist der Befehl für beliebige Dateinamen anfällig.${0#?}
' entfernt das erste Zeichen von$0
, dh das '.
'.So drucken Sie jede übereinstimmende Zeile mit dem Dateinamen:
Diese Variante verwendet '
-H
' anstelle von '-l
' und Beschriftungen mit Dateinamen anstelle von Dateipfad. '${0:2}
' entfernt die ersten beiden Zeichen von$0
, dh das './
', aber es wird anscheinend nicht von erkanntsh
.Natürlich können Sie Ihre Bedürfnisse anpassen.
quelle