Dateien nach bestimmtem Wort durchsuchen von Konsole

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
trickykid
Beiträge: 279
Registriert: 15.05.2003 12:37:06

Dateien nach bestimmtem Wort durchsuchen von Konsole

Beitrag von trickykid » 19.12.2012 10:50:13

Ich möchte alle *.html Dateien meines gesamten HOME nach einem bestimmten Wort bzw. Satz durchsuchen. Das sind ca. 2000 Dateien die in diversen Verzeichnissen und Unterverzeichnissen liegen.

Das Ergebnis möchte ich in eine simple Textdatei speichern. Das Ergebnis soll der Dateiname und der Pfad zu der Datei sein in dem das Wort oder der Satz vorkommt. Ich schätze da kommen so 40 -50 Dateien zusammen.

Suchen und ersetzen mache ich mit sed. Ich habe aber keine Ahnung wie ich das Ergebnis einer Suche in eine Datei speichere und den Pfad auslese. Wie gesagt, das soll von der Konsole aus geschehen. Ich hab gesehen einige machen das auch mit find. Jetzt weiss ich nicht was gängiger ist.

Gibt es dafür vielleicht irgendwo ein fertiges script?

Benutzeravatar
format_c
Beiträge: 188
Registriert: 23.01.2008 14:24:17
Kontaktdaten:

Re: Dateien nach bestimmtem Wort durchsuchen von Konsole

Beitrag von format_c » 19.12.2012 10:59:02

Einfach mal ins Blaue:

Code: Alles auswählen

$ find /path -iname '*.html' -print0 | xargs -0 -I {} grep -l "suchmuster" {} > ergebnis.txt
Alternativ:

Code: Alles auswählen

$ find /path -iname '*.html' -exec grep -l "suchmuster" {} >> ergebnis.txt \;
Gruß Alex
Zuletzt geändert von format_c am 19.12.2012 11:02:42, insgesamt 1-mal geändert.
[[ Black Holes are where God devided by 0 ]]

trickykid
Beiträge: 279
Registriert: 15.05.2003 12:37:06

Re: Dateien nach bestimmtem Wort durchsuchen von Konsole

Beitrag von trickykid » 19.12.2012 11:01:43

Schade, Du warst zu schnell. 8O

Das http://netz10.de/2009/07/24/findgrep/ könnte es sein. Teste es gerade.

uname
Beiträge: 12469
Registriert: 03.06.2008 09:33:02

Re: Dateien nach bestimmtem Wort durchsuchen von Konsole

Beitrag von uname » 19.12.2012 11:39:59

Kannst auch rekursiv suchen:

Code: Alles auswählen

fgrep -R irgendwas *
Um nur die Dateinamen incl. Pfad zu ermitteln:

Code: Alles auswählen

fgrep -R irgendwas * |cut -d":" -f1
Und um jede Datei nur einmal anzuzeigen bzw. incl. Anzahl der Treffer:

Code: Alles auswählen

fgrep -R irgendwas * |cut -d":" -f1 |uniq
fgrep -R irgendwas * |cut -d":" -f1 |uniq -c
Normalweise baut man zwischen "cut" und "uniq" noch ein "sort". Das ist aber unnötig, da Dateien nacheinander und nicht parallel durchsucht werden.

Möchtest du jedoch darauf direkt ein "sed" anwenden ist die Lösung schlecht. Da ist der find-Befehl mit -exec oder xargs doch besser.

Antworten