grep

T

tobfred

Grünschnabel
Hallo,

ich hab ne Frage zu grep. Bin absoluter Neuling und krieg das nicht gebacken und bin irgendwie am verzweifeln.

Ich will aus ner Festplatte alle Dateien eines bestimmen Types nach einem Wort durchsuchen das drin und einem das nicht drin ist.

z.B. alle *.cs Dateien die das Wort <example> drin haben aber <code> fehlt (das ist nicht nur das Beispiel das ist mein Problem ^^)

Das Ergebnis soll in irgendeiner Datei (txt oder aehnliches) mit Pfad Angaben gespeichert werden (also /verzeichnis1/verzeichnisxz/dateiname)

Kann mir da jemand helfen oder muss ich mich erschiessen?
(PS: OS ist XP benutze cygwin)

Viele Gruesse,
tobfred
 
Code:
find / -type f -iname '*.cs' -exec grep -l 'example' {} >> files.log \;

{edit}
Achso, mit cygwin kenne ich mich nicht aus, da weiss ich nicht, ob das funktioniert.
 
Zuletzt bearbeitet:
Und wie wuerde ich es hinkriegen das er von diesen Dateien die <example> drin haben die rauswirft die das tag <code> haben (anders: die dateien finden die <code> nicht haben)

was ansich das eigentliche hauptproblem von meinem Problem-Paket ist
 
das geht net weil mir das nur die zeilen rausgibt ich aber den dateinamen mit pfad brauche
bzw. er gibt mir nur ein leeres dokument aus


PS: das was ich will muss ja auch net ueber grep erreicht werden, fuer andere moeglichkeiten bin ich gerne offen
 
Zuletzt bearbeitet:
Hallo
Cygwin und XP sind hier eigentlich OT.
Hier geht es um echte Shell!
Deshalb mein Vorschlag unter Vorbehalt.
Wie deine Pseudoshell mit den entsprechenden Optionen umgeht, kann ich nicht sagen.

Dazu musst du dann selbst die Hilfeseiten (Manpage) deiner verwendeten Programme studieren.

Da du wahrscheinlich auch mit häßlichen Leerzeichen in Dateinamen rechnen musst (Ist unter Windows ja oft der Fall), schlage ich folgendes vor:
Gehe ich richtig, dass du nur die Dateinamen willst?

Code:
find /path/ -type f -iname "*txt" -print0|xargs -0 -n1 grep -Zl "ichkommvor"|xargs -n1 grep -L "ichkommnichtvor" >ergebnisfile

Gruß Wolfgang
 
Trotz der man bin ich ja am verzweifeln :)

Allerdings funktioniert dein geposter Befehl BESTENS!!!

VIELEN VIELEN DANK!
----------------------------
Zu frueh gefreut :-(
In meinem Testverzeichnis gings
In dem eigentlichen Verzeichnis nicht :-(

grep: unknown directories method

kennt jmd. diese fehlermeldung?
 
Zuletzt bearbeitet:
Oha, die andere Anforderung hatte ich ganz übersehen. Hätte ich mit meinem Wissen so aber glaube ich auch gar nicht hinbekommen.

Danke auch von mir an Wolfgang, wieder was gelernt! :)
 
Unter der Bash funktioniert das bei mir.
Aber wahrscheinlich macht deine Hilfsshell das Redirect nicht mit.
Eventuell hilft hier am Ende die Option -i (wenn dein grep das kennt)

Code:
find /path -type f -iname "*txt" -print0|xargs -0 -n1 grep -Zl "wolle"|xargs -0 -n1 -ik grep -L "Kurseinheiten" k > ergebnisfile
 
hmm am beispiel funktioniert es wieder :-)
wenn ich z.b. nach "example" such dann muss ich doch einfach nur "\<example\>" schreiben oder?
 

Ähnliche Themen

Grep - Ganze Festplatte durchsuchen

ersetzen in einem Rückgabestring eines vorher ausgeführten Programms

Zurück
Oben