Sie können ack verwenden. Es ist wie grep für Quellcode. Sie können damit Ihr gesamtes Dateisystem scannen.
Mach einfach:
ack 'text-to-find-here'
In Ihrem Stammverzeichnis.
Sie können auch reguläre Ausdrücke verwenden, den Dateityp angeben usw.
AKTUALISIEREN
Ich habe gerade The Silver Searcher entdeckt, das wie ack ist, aber 3-5x schneller als es und sogar Muster von einem .gitignore
ignoriert Datei.
Gehen Sie wie folgt vor:
grep -rnw '/path/to/somewhere/' -e 'pattern'
-r
oder-R
ist rekursiv,-n
Zeilennummer ist, und-w
steht für Übereinstimmung mit dem ganzen Wort.-l
(Kleinbuchstabe L) kann hinzugefügt werden, um nur den Dateinamen übereinstimmender Dateien anzugeben.-e
ist das während der Suche verwendete Muster
Zusammen mit diesen --exclude
, --include
, --exclude-dir
Flags könnten für eine effiziente Suche verwendet werden:
- Dadurch werden nur die Dateien mit der Erweiterung .c oder .h durchsucht:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
- Dies schließt die Suche nach allen Dateien aus, die mit der Erweiterung .o enden:
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
- Für Verzeichnisse ist es möglich, ein oder mehrere Verzeichnisse mit dem
--exclude-dir
auszuschließen Parameter. Beispielsweise werden dadurch die Verzeichnisse dir1/, dir2/ und alle, die mit *.dst/:
übereinstimmen, ausgeschlossen
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
Das funktioniert sehr gut für mich, um fast den gleichen Zweck wie Sie zu erreichen.
Weitere Optionen finden Sie unter man grep
.
Verwenden Sie grep -ilR
:
grep -Ril "text-to-find-here" /
i
steht für Groß-/Kleinschreibung ignorieren (in Ihrem Fall optional).R
steht für rekursiv.l
steht für "den Dateinamen anzeigen, nicht das Ergebnis selbst"./
steht für das Starten an der Wurzel Ihrer Maschine.