Hallo zusammen! Frage: Ich möchte in meinem Filesystem alle Text-Dateien finden, in denen eine bestimmte Zeichenfolge enthalten ist - im Body, nicht im Dateinamen ;-) Ist dafür der Befehl "find" geeignet? Auf den ersten Blick scheint er mir eher dazu gut, Dateien mit einem bestimmten Namen oder Namensmuster bzw. mit bestimmten Änderungszeiten herauszufinden. Wie oder womit kann man Dateien inhaltlich durchsuchen und auflisten? Viele Grüße Anatol
Am Montag, 22. Mai 2006 16:17 schrieb Anatol:
Frage: Ich möchte in meinem Filesystem alle Text-Dateien finden, in denen eine bestimmte Zeichenfolge enthalten ist - im Body, nicht im Dateinamen ;-) Ist dafür der Befehl "find" geeignet? Auf den ersten Blick scheint er mir eher dazu gut, Dateien mit einem bestimmten Namen oder Namensmuster bzw. mit bestimmten Änderungszeiten herauszufinden. Wie oder womit kann man Dateien inhaltlich durchsuchen und auflisten?
$ man grep grep, egrep, fgrep - print lines matching a pattern Üblich ist folgendes: find DIR1 DIR2 ... -name "pattern" -type f| xargs grep "MUSTER" oder falls Blanks in den Dateinamen vorkommen: find DIR1 DIR2 ... -name "pattern" -type f -print 0| xargs -0 grep "MUSTER" wobei DIR1, DIR2 verzeichnisse sind, welche durchsucht werden sollen. Die Bedingung "-name pattern" kann maucgh eg lassen, dann werden alle Dateien untersucht. mehr dazu in man find man grep Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Am Montag, 22. Mai 2006 16:29 schrieb Dr. Jürgen Vollmer:
Am Montag, 22. Mai 2006 16:17 schrieb Anatol:
Frage: Ich möchte in meinem Filesystem alle Text-Dateien finden, in denen eine bestimmte Zeichenfolge enthalten ist - im Body, nicht im Dateinamen ;-) Ist dafür der Befehl "find" geeignet? Auf den ersten Blick scheint er mir eher dazu gut, Dateien mit einem bestimmten Namen oder Namensmuster bzw. mit bestimmten Änderungszeiten herauszufinden. Wie oder womit kann man Dateien inhaltlich durchsuchen und auflisten?
$ man grep grep, egrep, fgrep - print lines matching a pattern
Üblich ist folgendes:
find DIR1 DIR2 ... -name "pattern" -type f| xargs grep "MUSTER"
oder falls Blanks in den Dateinamen vorkommen:
find DIR1 DIR2 ... -name "pattern" -type f -print 0| xargs -0 grep "MUSTER"
find DIR1 ... -type f -exec grep "Muster" {} \; ist eine weitere Variante, mittlerweile geht auch: grep -r "Muster" DIR1 DIR2 ... Das ist wohl die einfachste Variante. Grüße, Thomas Mack
Am Montag, 22. Mai 2006 16:35 schrieb Thomas Mack:
Am Montag, 22. Mai 2006 16:29 schrieb Dr. Jürgen Vollmer:
Am Montag, 22. Mai 2006 16:17 schrieb Anatol:
Frage: Ich möchte in meinem Filesystem alle Text-Dateien finden, in denen eine bestimmte Zeichenfolge enthalten ist - im Body, nicht im Dateinamen ;-) Ist dafür der Befehl "find" geeignet? Auf den ersten Blick scheint er mir eher dazu gut, Dateien mit einem bestimmten Namen oder Namensmuster bzw. mit bestimmten Änderungszeiten herauszufinden. Wie oder womit kann man Dateien inhaltlich durchsuchen und auflisten?
$ man grep grep, egrep, fgrep - print lines matching a pattern
Üblich ist folgendes:
find DIR1 DIR2 ... -name "pattern" -type f| xargs grep "MUSTER"
oder falls Blanks in den Dateinamen vorkommen:
find DIR1 DIR2 ... -name "pattern" -type f -print 0| xargs -0 grep "MUSTER"
find DIR1 ... -type f -exec grep "Muster" {} \;
Die üblichen Argumente: - was ist mit Blanks im Dateinamen (da bin ich mir nicht sicher) - für jede gefundene Datei wird ein separater Prozess gestartet
ist eine weitere Variante, mittlerweile geht auch:
grep -r "Muster" DIR1 DIR2 ... Setzt aber GNU-grep voraus, ist nicht portabel.
Das ist wohl die einfachste Variante. aber noch eine Feature eines Kommandos mehr zum merken. In Anlehnung an ein bekanntes Gleichnis: Mit find .. | xargs .. lernt man fischen (sprich dieses Muster kann man auf viele Probleme anwenden), und mit grep -r kriegt man was zu Essen (sprich man hat genau ein Problem gelöst)
Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
participants (3)
-
Anatol
-
Dr. Jürgen Vollmer
-
Thomas Mack