Gibt es einen Befehl, mit dem ein Schlüsselwort in Dateien unter einem Verzeichnis mit einer bestimmten Erweiterung gesucht werden kann?
Die Zeichenfolge grep -irn "string" ./path
bietet eine rekursive Suche nach allen Dateien im Verzeichnis ./path
. Meine spezielle Anforderung besteht darin, in allen Dateien unter ./path
mit einer Erweiterung wie z*.h
"*.h"
Anführungszeichen setzen.foobar.h
im aktuellen Verzeichnis aufgerufen wird , und versuchen Sie es erneut.S et (einschalten) der sh ell opt ion
globstar
mit dem KommandoDies führt dazu, dass
**
als Dateinamenkomponente hier und unten alles bedeutet. Bedeutetpath/**
also alles impath
Verzeichnis und seinen Unterverzeichnissen . (Sie müssen hier nicht tippen./
.) Dann können Sie verwendenum alle
.h
Dateien in und unter zu durchsuchenpath
.Sie können u nsoll Optionen mit
shopt -u
.quelle
quelle
-exec
...+
ist auch gut."string"
in Ihre Antwort aufzunehmen!Wenn Sie etwas auf Ihrem Computer installieren können, empfehle ich die Verwendung von ack .
Sie können genau das tun, was Sie brauchen, und vieles mehr. Für Ihren Anwendungsfall können Sie Folgendes tun:
Führen Sie den Befehl aus, um herauszufinden, welche Dateifilter nativ unterstützt werden
ack --help=type
.quelle
Was ist mit diesem?
Erläuterung:
find
Befehl ersetztfind
Befehlsfind
mit-exec
, das ist die End-of-Befehlsspezifiziererquelle
"*.h"
? Ich hätte gedacht, es müsste sein'*.h'
Wenn Sie gnu grep verwenden, hat es eine Flagge, die genau das tut, was Sie wollen:
obwohl ich nicht denke, dass es in anderen greps verfügbar ist.
quelle