27 Stimmen

Verwendung von grep zum Durchsuchen von Dateien, die von find bereitgestellt werden: Was ist falsch an find . | xargs grep '...'?

Wenn ich den Befehl verwende:

find . | xargs grep '...'

Ich bekomme die falschen Streichhölzer. Ich versuche, nach der Zeichenfolge zu suchen ... in allen Dateien des aktuellen Ordners.

41voto

Steve Schnepp Punkte 4449

Wie Andy White sagte, müssen Sie die fgrep für die Übereinstimmung mit einfachen . oder die Punkte zu umgehen.

Sie müssen also schreiben ( -type f ist es, nur die Dateien zu haben: die Verzeichnisse wollen Sie natürlich nicht). :

find . -type f | xargs fgrep '...'

oder wenn Sie trotzdem grep verwenden möchten:

find . -type f | xargs grep '\.\.\.'

Und wenn Sie nur die aktuell Verzeichnis und nicht dessen Unterverzeichnisse:

find . -maxdepth 1 -type f | xargs fgrep '...'

7voto

Laurence Gonsalves Punkte 131009

'.' passt auf jedes beliebige Zeichen, so dass Sie alle Zeilen finden, die 3 oder mehr Zeichen enthalten.

Sie können die Punkte entweder auslassen, etwa so:

find . | xargs grep '\.\.\.'

Oder Sie können fgrep verwenden, das anstelle einer Regex-Übereinstimmung eine literale Übereinstimmung durchführt:

find . | xargs fgrep '...'

(Einige Versionen von grep akzeptieren auch ein -F Flag, das sie sich wie fgrep verhalten lässt).

5voto

ghostdog74 Punkte 305138

@OP, wenn Sie nach Dateien suchen, die ...,

grep -R "\.\.\." *

4voto

Jeremy Powell Punkte 3398

Wenn Sie nach einem Dateiname das passt, versuchen Sie es:

find . -name "filename pattern" 

ou

find . | grep "filename pattern"

Wenn Sie auf der Suche sind nach Dateien die übereinstimmen (d.h. sie enthalten die grep-Zeichenfolge)

find . | xargs grep "string pattern"

funktioniert gut. oder einfach:

grep "string pattern" -R *

2voto

Andy White Punkte 83877

Wenn Sie buchstäblich tippen grep '...' finden Sie so gut wie jede Zeichenkette. Ich bezweifle, dass Sie tatsächlich tippen '...' für Ihren grep-Befehl, aber wenn Sie das tun, wird die ... passt auf drei beliebige Zeichen.

Bitte geben Sie mehr Informationen darüber an, wonach Sie suchen, und vielleicht kann Ihnen jemand weiterhelfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X