Wie kann ich unter grep
Linux nur Dateinamen (keine Inline-Übereinstimmungen) anzeigen?
Ich benutze normalerweise so etwas wie:
find . -iname "*php" -exec grep -H myString {} \;
Wie kann ich nur die Dateinamen (mit Pfaden) erhalten, aber ohne die Übereinstimmungen? Muss ich verwenden xargs
? Ich habe auf meiner grep
Manpage keinen Weg gesehen, dies zu tun .
vim $(grep -rl Something app/)
Antworten:
Die Standardoption
grep -l
(dh ein Kleinbuchstabe L) könnte dies tun.Aus dem Unix-Standard :
Sie brauchen auch
-H
in diesem Fall nicht.quelle
grep -nrl "some text" .
wenn ich rekursiv nach Text in einer Reihe von UnterordnernVon der
grep(1)
Manpage:quelle
Für eine einfache Dateisuche können Sie grep's
-l
und-r
Optionen verwenden:Die gesamte Suche erfolgt über grep. Wenn Sie Dateien für einen anderen Parameter auswählen müssen, ist find natürlich die richtige Lösung:
Die
execdir
Option erstellt jeden grep-Befehl pro Verzeichnis und verknüpft Dateinamen zu nur einem Befehl (+
).quelle
Ihre Frage Wie kann ich nur die Dateinamen (mit Pfaden) erhalten?
Ihr Syntaxbeispiel finden. -iname "* php" -exec grep -H myString {} \;
Mein Befehlsvorschlag
Die Ausgabe dieses Befehls unter meinem Linux-Betriebssystem:
Viel Spaß, da Sie den Dateinamen mit Pfad benötigen!
quelle