Ich suche nach Dateien basierend auf einem regulären Ausdruck und versuche dann, diese Dateien nach Inhalten zu durchsuchen. So habe ich zum Beispiel so etwas
#Find all C++ files that match a certain pattern and then search them
find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>"
Das Problem, auf das ich stoße, ist, dass einige der Pfade Leerzeichen enthalten, was verwirrt xargs
. Ich weiß, dass ich, wenn ich nur verwenden würde find
, das -print0
Argument (zusammen mit dem -0
Argument on xargs
) verwenden könnte, um zu verhindern, dass xargs Leerzeichen als Trennzeichen behandelt. Gibt es etwas ähnliches mit grep
?
Oder gehe ich dieses Problem völlig falsch an? Naiv, find
um grep
für xargs grep
mich Sinn zu machen, aber ich bin offen für andere Ansätze, die die gleichen Ergebnisse liefern.
xargs
indem Sie-i
Parameter, a lacat sample.txt | grep "pat t ern" | xargs -i grep "{}"
- die geschweiften Klammern sagen sie , wo das Argument zu positionieren. Das Handbuch sagt mir, dass-i
es veraltet ist,-I
also lohnt es sich vielleicht auch, einen Blick darauf zu werfen.