Suche in bestimmten Dateien - grep Frage

H

harald13

Mitglied
Thread Starter
Dabei seit
02.04.2005
Beiträge
20
Reaktionspunkte
1
Hallo,

ich wüsste gerne, wie ich folgende Fragestellung in einem Kommando unterbringen kann.

Ich suche Dateien ab einem bestimmten Verzeichnis, die einen bestimmten Wortbestandteil im Dateinnamen haben. Die gefundenen Dateien (nicht die Dateinamen) möchte ich dann grep vorwerfen damit darin nach dem String "u!" gesucht wird. Wenn da jemand einen Tipp, wie man das elegant in einer Befehlszeile unterbingen kann, wäre toll.

... harald
 
harald13 schrieb:
Hallo,

ich wüsste gerne, wie ich folgende Fragestellung in einem Kommando unterbringen kann.

Ich suche Dateien ab einem bestimmten Verzeichnis, die einen bestimmten Wortbestandteil im Dateinnamen haben. Die gefundenen Dateien (nicht die Dateinamen) möchte ich dann grep vorwerfen damit darin nach dem String "u!" gesucht wird. Wenn da jemand einen Tipp, wie man das elegant in einer Befehlszeile unterbingen kann, wäre toll.

... harald

find . -name file_\* -exec grep -H u! {} ";"

Bedeutet:
Suche ab dem aktuellen Verzeichnis (.) alle Dateien, die mit dem Namen (-name) "file_" (beachte den mit Backslash maskierten Asteriks (*)) und übergebe die Datei anschliessend an das Kommando "grep" und suche darin die Zeichenkette "u!". Vor der Ausgabe der gefundenen Kette hätte ich gerne noch den Dateinamen (-H) angezeigt, in dem der String vorkommt. Das abschliessende Semikolon muss ebenfalls maskiert, und somit vor der Shell "versteckt" werden. Daher entweder in Anführungszeichen (wie hier) oder stattdessen ein Backslash davor
 
Zuletzt bearbeitet:
find <verzeichnis> -name "*<WortbestandteilimDateinamen>*" -exec grep "u!" {} \;

Ein Beispiel:

find / -name "*.html" -exec grep "html" {} \;

sucht alle Dateien .html nach Inhalt html ab.

Wenn du case insensitive suchen möchtest, dann benutze iname anstatt name.

Siehe hierzu:

man find
man grep
 
Super, vielen Dank euch beiden .....
 
Zurück
Oben Unten