korrekte Befehlszeile für Linus-Grep gesucht.
jens321
- sonstiges
Hallo!
Ich suche einen Befehl, der mir alle Dateien anzeigt, die ein bestimmtes Wort enthalten.
Der Suchebefehl soll rekursiv über alle Unterverzeichnisse gehen, aber nur Dateien durchsuchen, die die Dateiendung ".pl" haben.
Meine Verzeichnisstruktur sieht wie folgt aus
startverzeichnis
unterverzeichnis1
uv1_1
uv1_1_1
...
uv1_2
...
unterverzeichnis2
...
Ich habe folgendes probiert:
grep -ril suchbegriff *
Das dauert aber ewig, ich denke, weil ich Unmengen von Bildern in den Unterverzeichnissen habe.
Ein grep -ril suchbegriff *.pl
bzw grep -ril suchbegriff */*.pl
bringt aber immer den Fehler "Datei oder Verzeichnis nicht gefunden"
Wie ist die richtige Befehlsstruktur?
Vielen Dank
Jens
Moin jens321,
Ich suche einen Befehl, der mir alle Dateien anzeigt, die ein bestimmtes Wort enthalten.
Der Suchebefehl soll rekursiv über alle Unterverzeichnisse gehen, aber nur Dateien durchsuchen, die die Dateiendung ".pl" haben.
Das sollte mit
grep -R --include='*.pl' wort .
erreichbar sein.
Wenn es komplizierter wird, du also mit einem einfachen Glob die Dateien nicht mehr beschreiben kannst, dann kannst du das auch mit find
realisieren:
find . -type f -and -name '*.pl' -print0 | xargs -0 grep wort
LG,
CK
Das sollte mit
grep -R --include='*.pl' wort .
Wunderbar, das klappt so!
Vielen vielen Dank!
Wie ist die richtige Befehlsstruktur?
grep beherrscht keine Dateisuche (*.pl wird vor grep von der shell - und ergo nicht von grep zu einer Dateiliste ausgewertet][¹]) . Deshalb: baue ein find davor, das kann das:
find ./ -name "*.pl" -exec grep -il "test" {} \;
Liefert bei mir etwas wie:
./perl/test.pl
Jörg Reinholz
---------
¹ Du kannst das mit echo *.pl testen.