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?
Dateien nach bestimmtem Wort durchsuchen von Konsole
Re: Dateien nach bestimmtem Wort durchsuchen von Konsole
Einfach mal ins Blaue:
Alternativ:
Gruß Alex
Code: Alles auswählen
$ find /path -iname '*.html' -print0 | xargs -0 -I {} grep -l "suchmuster" {} > ergebnis.txt
Code: Alles auswählen
$ find /path -iname '*.html' -exec grep -l "suchmuster" {} >> ergebnis.txt \;
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 ]]
Re: Dateien nach bestimmtem Wort durchsuchen von Konsole
Schade, Du warst zu schnell.
Das http://netz10.de/2009/07/24/findgrep/ könnte es sein. Teste es gerade.
Das http://netz10.de/2009/07/24/findgrep/ könnte es sein. Teste es gerade.
Re: Dateien nach bestimmtem Wort durchsuchen von Konsole
Kannst auch rekursiv suchen:
Um nur die Dateinamen incl. Pfad zu ermitteln:
Und um jede Datei nur einmal anzuzeigen bzw. incl. Anzahl der Treffer:
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.
Code: Alles auswählen
fgrep -R irgendwas *
Code: Alles auswählen
fgrep -R irgendwas * |cut -d":" -f1
Code: Alles auswählen
fgrep -R irgendwas * |cut -d":" -f1 |uniq
fgrep -R irgendwas * |cut -d":" -f1 |uniq -c
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.