Angenommen, ich muss die Funktion GetTypes()
in allen C # -Quelldateien ( .cs
) der Verzeichnisse / Unterverzeichnisse finden.
Ich habe verwendet grep -rn GetTypes *.cs
, aber ich habe einen Fehler mit grep: *.cs: No such file or directory
. Ich musste verwenden grep -rn GetTypes *
, aber in diesem Fall zeigt es nicht *.cs
nur alle Dateien .
Welchen Befehl muss ich verwenden, um die Zeichenfolge nur in .cs
Dateien zu finden?
Antworten:
Wenn Ihre Shell Bash ≥4 ist, geben Sie
shopt -s globstar
Ihre~/.bashrc
. Wenn deine Shell zsh ist, bist du gut. Dann kannst du rennen**/*.cs
bedeutet, dass alle Dateien, die*.cs
im aktuellen Verzeichnis oder in seinen Unterverzeichnissen übereinstimmen , rekursiv übereinstimmen .Wenn Sie keine Shell
**
ausführen, die unterstützt--include
, aber Ihr grep unterstützt , können Sie ein rekursives grep ausführen und festlegengrep
, dass nur Dateien berücksichtigt werden sollen, die bestimmten Mustern entsprechen. Beachten Sie die Anführungszeichen um das Dateinamenmuster: Es wird von grep und nicht von der Shell interpretiert.grep -r
Verwenden Sie nur tragbare Tools (einige Systeme haben diese überhaupt nicht), um siefind
für den Verzeichnisüberquerungsteil undgrep
für den Textsuchteil zu verwenden.quelle
globstar
Verwenden Sie Folgendes, um die Option für eine aktuelle Bash 4+ -Shell vorübergehend festzulegenshopt -s globstar
.Sie sollten sich den billiant kleinen grep / find Ersatz ansehen, der als bekannt ist
ack
. Es ist speziell für die Suche in Verzeichnissen von Quellcodedateien eingerichtet.Ihr Befehl würde folgendermaßen aussehen:
quelle
Wenn Sie GNU verwenden
grep
, können Sie angeben, welche Dateien in eine rekursive Verzeichnisdurchquerung aufgenommen werden sollen:(wobei der letzte Punkt das aktuelle Arbeitsverzeichnis als Stamm der Durchquerung bezeichnet)
quelle
Ich verwende eine Kombination aus find und grep:
Zum Beispiel
find
können Sie.
durch ein Verzeichnis ersetzen und entfernen,-name
wenn Sie in jeder Datei suchen möchten.Für
grep
,-bn
die Position und die Zeilennummer drucken und--color
Ihre Augen helfen wird durch Hervorhebung , was Sie suchen.quelle