müssen nach etwas im gesamten Inhalt suchen
Ich versuche:
find . | xargs grep word
Ich erhalte eine Fehlermeldung:
xargs: unbefristetes Zitat
Wie kann man das erreichen?
xargs
Erwartet Eingaben in einem Format, das von keinem anderen Befehl erstellt wird, sodass eine effektive Verwendung schwierig ist. Was hier falsch läuft, ist, dass Sie eine Datei haben, deren Name bei der Eingabe in Anführungszeichen gesetzt werden muss xargs
(wahrscheinlich mit einem '
).
Wenn Ihr grep die Option -r
oder -R
für die rekursive Suche unterstützt, verwenden Sie sie.
grep -r word .
Verwenden Sie andernfalls die -exec
Primärdaten von find
. Dies ist die übliche Methode, um den gleichen Effekt wie zu erzielen xargs
, außer ohne Einschränkungen bei den Dateinamen. Mit den neuesten Versionen von find
können Sie mehrere Dateien in einem einzigen Aufruf des Hilfsbefehls gruppieren. Durch /dev/null
die Übergabe an wird grep
sichergestellt, dass der Dateiname vor jeder Übereinstimmung angezeigt wird, auch wenn er zufällig für eine einzelne Datei aufgerufen wird.
find . -type f -exec grep word /dev/null {} +
Ältere Versionen von find
(auf älteren Systemen oder OpenBSD oder reduzierten Dienstprogrammen wie BusyBox) können den AUX-Befehl immer nur für eine Datei gleichzeitig aufrufen.
find . -type f -exec grep word /dev/null {} \;
Einige Versionen von find
und xargs
haben Erweiterungen, mit denen sie korrekt kommunizieren können. Dabei werden Nullzeichen verwendet, um Dateinamen zu trennen, sodass keine Anführungszeichen erforderlich sind. Heutzutage hat nur OpenBSD diese Funktion ohne -exec … {} +
.
find . -type f -print0 | xargs -0 grep word /dev/null
/dev/null
. Es ist ärgerlich, wenn das Ausgabeformat variieren kann, je nachdem, wie viele Dateien übereinstimmen ... danke.Ich denke du meinst die erste Option
grep rekursiv, zum Durchsuchen von Inhalten in Dateien
Es ist rekursiv, um nach passenden Dateien zu suchen
quelle
Wenn Sie die GNU-Tools haben (was Sie tun, wenn das Linux-Tag korrekt ist), können Sie
-print0
und verwenden-0
, um die üblichen Probleme beim Zitieren zu umgehen:quelle
Es gibt auch ack , speziell wie spezielle Verzeichnisse überspringen
.svn
,.git
und so weiter . Es ist ein tägliches Tool für Entwickler.Es ist ziemlich nah dran, nach den üblichen Schaltern zu suchen .
Ex. :
Paket
ack-grep
auf debian & debian likes.quelle
Im aktuellen Verzeichnis können Sie grep verwenden:
quelle
Ich denke, Sie möchten eine Zeichenfolge in Dateien finden
Versuchen
find . -name "*" | xargs grep -l "string"
quelle