Sorry für die verwirrende Überschrift, aber anders kann ich es nicht in einen Satz zusammenfassen 😉
mit grep alle Dateien im aktuellen Ordner rekursiv durchsuchen
Ihr wollt in einem Ordner inkl. Unterordner alle Dateien nach einer Zeichenkette durchsuchen? Dann verwendet folgendes Kommando:
grep -ir "das will ich finden" ./*
Der Parameter “i” bewirkt, dass bei dem zu suchenden Begriff nicht auf die Groß-/Kleinschreibung geachtet wird, das “r” sorgt dafür, dass der zu durchsuchende Ordner auch rekursiv, also mit allen Unterordnern, durchsucht wird.
grep mit einem NOT verwenden
Wollt ihr nun noch nach Wort Nummer 1 suchen, aber Wort Nummer 2 soll nicht in der gleichen Zeile vorkommen? Dann kommt folgendes Kommando zum Einsatz:
grep -ir "das will ich finden" ./* | grep -iv "das soll nicht in der gleichen Zeile stehen"
Wie ihr seht, filtern wir das Ergebnis des ersten grep einfach nochmal mit grep, wenden aber den Parameter “v” an. Dieser bewirkt, dass grep sich genau umgekehrt wie sonst verhält – es werden also alle Zeilen angezeigt, die das gesuchte Wort NICHT enthalten.
Öhm, aber was willst Du mit dem Ergebnis? Das zeigt Dir ja nur die Zeile an, in der der String vorkommt. Der Sinn verschliesst sich mir gerade. 🙂
Ok, ich nehm die Kritik teilweise zurück, da zumindest der Dateiname vorne steht.
Du solltest den Beitrag nochmal ganz genau lesen. 😉