Ich möchte die Dateien rekursiv und eindeutig auflisten, die das angegebene Wort enthalten.
Beispiel : Wenn ich nach dem Wort 'check' suche, mache ich normalerweise ein Grep
$ grep check * -R
Da dieses Wort jedoch häufig vorkommt, wird viel ausgegeben. Also muss ich nur die Dateinamen auflisten, die das angegebene Suchwort enthalten. Ich denke, ein Trick mit find
und xargs
würde hier ausreichen, aber nicht sicher.
Irgendwelche Ideen?
quelle
grep -rl "text to find" "/usr/share"
und es hat super funktioniert!Sie möchten wahrscheinlich nicht die
-R
Option verwenden, die in modernen GNU-Versionengrep
beim Abstieg in Verzeichnisse Symlinks folgt. Verwenden Sie-r
stattdessen die Option dort, die seit Version 2.12 (April 2012) keinen Symlinks mehr folgt.Wenn Ihr grep nicht GNU ist oder älter als Version 2.12, oder wenn Sie Ihren Code auf GNU-Systeme portieren möchten, die nicht auf dem neuesten Stand sind, verwenden Sie den
find
obigen Befehl.Ansonsten können Sie Folgendes tun:
Verwenden Sie
*
diese Option nicht (da dadurch ausgeblendete Dateien im aktuellen Verzeichnis (und nur im aktuellen Verzeichnis) ausgelassen werden und Probleme bei Dateien auftreten, deren Name mit a beginnt-
). Vermeiden Sie die Übergabe von Optionen nach Argumenten, da dies abhängig von der nicht garantiert funktioniert Umwelt und ist nicht tragbar.quelle
Versuche dies:
Was die
grep
Fahnen betrifft ...-c
Gibt einen Dateinamen gefolgt von: und eine Zahl zurück, die angibt, wie oft die Suchzeichenfolge in der angegebenen Datei vorkommt.-v
übernimmt die Ausgabe der erstengrep
Suche, filtert die Dateien mit Null-Ergebnissen heraus und druckt nur die Dateien mit Nicht-Null-Ergebnissen aus.quelle
:0
. Es ist besser zu tungrep -v ':0$'
. Sogar das wird an Pfadnamen ersticken, die Zeilenumbrüche enthalten.grep -rin "whatToFind" locationToFInd
zB $ grep -rin "vihaan".
sucht und listet rekursiv Dateinamen und die entsprechenden Zeilen auf, in denen "vihaan", "." verweist auf das aktuelle Verzeichnis.
quelle
Suche im aktuellen Verzeichnis. Geben Sie
/
anstelle von Folgendes an, um von root nachzuschlagen.
quelle
grep -lR "text-to-find" <where-to-find>
funktioniert auch gut.zB
grep -lR "NAVIGATE" .
wo wir das WortNAVIGATE
im.
im aktuellen Verzeichnis finden.quelle
Geben Sie die Liste der
.q
Dateien enthält das Schlüsselworttrim
quelle