Hi Prolinux User,
ich möchte ein kleines BASH Skript schreiben das
- alle Dateien in einem Ordner rekursiv nach einem Begriff durchsucht (alles text files)
- die zu suchenden Begriffe sollen aus einer Datei eingelesen werden
- und am Ende soll eine Ausgabe erscheinen in welchen Dateien die Begriffe enthalten sind
Mir ist da schon einiges mit cat und grep eingefallen
aber ich weiß nicht genau wie es umsetze und welche Werkzeuge ich noch dazu brauche.
Freue mich auf jedes Beispielskript!
Gruß, Diano Hartmann
Dateien rekursiv nach begriffen durchsuchen?
Im Herzen ein Einzeiler: find durchsucht ab dem aktuellen Arbeitsverzeichnis (.) alle normalen (-type f) Dateien mit Endung .txt (-name "*.txt") und gibt die Null-Byte-terminiert (-print0) an xargs weiter, der daraus ein (oder ggf. mehrere) grep-Kommandos zusammenbestelt. Diese greps ziehen sich ihre Suchbegriffe aus der Datei suchbegriffe (-f suchbegriffe) und geben bei Treffern nur den Namen der Datei aus (-l).
War's in etwas so etwas?
Jochen
Code: Select all
find . -type f -name "*.txt" -print0 | xargs -0 grep -f suchbegriffe -l
War's in etwas so etwas?
Jochen
Die grösste Lüge der EDV? "Mal eben..."
find sucht also type f dateien? Was ist type f reine text dateien?
ich passe z.Z. für einen Bildungsträger das Studip System an (studip.de)
Dort ist alles in php geschrieben und in diesem System soll eine ganze Liste von Begrifflichkeiten durch andere ersetzt werden. Ne menge php files
Um nicht nun jedes file per hand zu durchsuchen bietet sich es an es per skript zu machen.
So, dann mach ich mich mal an die arbeit
ich passe z.Z. für einen Bildungsträger das Studip System an (studip.de)
Dort ist alles in php geschrieben und in diesem System soll eine ganze Liste von Begrifflichkeiten durch andere ersetzt werden. Ne menge php files
Um nicht nun jedes file per hand zu durchsuchen bietet sich es an es per skript zu machen.
So, dann mach ich mich mal an die arbeit
Die man-page zu find hilft Dir da weiter: Mittels der Option -type kannst Du den Typ der zu findenden Dateien einschränken.
Jochen
- -type f: Normale Dateien (files). Ob deren Inhalt reiner Text, ein Programm im ELF-Format, ein MP3 oder ein Bild im JPEG- oder PNG-Format ist, ist egal; gemeint ist hier die Sicht des Betriebssystems.
- -type d: Verzeichnisse (directory).
- -type b : Blockorientierte Gerätedateien (/dev/hda, /dev/sda,...)
- -type c : Zeichenorientierte Gerätedateien (/dev/tty1, /dev/st0,...)
- und noch ein paar mehr...
Jochen
Die grösste Lüge der EDV? "Mal eben..."