Dateien ausgeben, die Textstring enthalten

bolshi

Aktives Mitglied
Thread Starter
Dabei seit
13.03.2009
Beiträge
775
Reaktionspunkte
19
Hallo,
folgender Befehl soll alle Dateien ausgeben, die den String "$GLOBALS['TSFE']->set_no_cache();" enthalten:

Code:
 find cpprojekt1 -type f -exec grep -i "$GLOBALS['TSFE']->set_no_cache();"

Als Fehlermeldung kommt:

Code:
missing argument to `-exec'

Wie kann ich via Terminal alle Dateien ausgeben, die innerhalb des Verzeichnisses cpprojekt1 o.g. Textstring enthalten?

Grüße,
bolshi
 
Hab's wie folgt gelöst:
Code:
grep -r "$GLOBALS['TSFE']->set_no_cache();" cpprojekt1/
 
Hiho,

Im find fehlte am Ende ein "{} \;" und damit nur die Datei, nicht der Fund in der Datei ausgegeben wird, bietet sich beim grep ein "-l" an.

Ansonsten ist die grep Lösung natürlich die elegantere.


Atti
 
Hiho,

Berechtigte Fragen :)

das "{}" ist der Platzhalter für den Dateinamen und "\;" terminiert den Parameter "-exec". d.h. wenn das Kommando einfach den Dateinamen hinten dran geklatscht bekommen soll, steht "{} \;" am Ende. Wenn der Dateiname irgendwo mitten drin stehen soll, dann kann zwischen "{}" und "\;" auch was stehen.

z.B.

Code:
find . -exec echo DAVOR {} DAHINTER \; -type f

Zum grep: Das ist ein kleines "-L"

Während

Code:
grep a *

alle Funde von "a" mit vorangestellten Dateinamen auswirft (also ggf. auch mehere Funde pro Datei), wirft

Code:
grep -l a *

Nur die Dateinamen aus, pro Datei eine Zeile - egal wie viele Funde in der Datei sind.

Atti
 
Zurück
Oben Unten