2010-05-18 1 views
5

Ich möchte in der Lage sein, die Dateien, die ich mit meiner ersten Grep-Anweisung gefunden habe, zum Beispiel: grep -r Makefile * Und dann übergeben Sie die Dateien in diesem Pass von grep zu einem zweiten Grep mit etwas wie gefunden das zum Beispiel: grep {dateien} '-lfoo'Wie übergebe ich die resultierenden Dateien von einem Grep-Pass zu einem anderen, so dass ich nur die Teilmenge mit dem zweiten Durchlauf grep?

Wie mache ich das? Ich weiß, dass es einen Weg geben muss.

Vielen Dank.

Antwort

7
grep -l firstmatch * | xargs grep secondmatch {} 
+3

Ich würde empfehlen: 'grep -l firematch | xargs grep - Zweitmatch'. Dadurch wird Grep so oft wie möglich aufgerufen. Auch ohne das '-I {}' (oder jetzt veraltet -i) werden die geschweiften Klammern nicht interpretiert. Außerdem bewirkt Ihr Befehl, dass grep für jede Datei ausgeführt wird, die beim ersten Aufruf von grep gefunden wurde, und grep für '{}' (oder seine Ersetzung in Abhängigkeit von Ihrer grep-Variante). –

+0

Was meinst du mit Xargs? – NSA

+2

@ NSA: 'Xargs' ist ein Befehl. Es liest seine Standardeingabe für eine Liste von Argumenten (normalerweise Dateinamen) und verknüpft sie dann mit den Argumenten des Befehls (in diesem Fall '' grep {} secondmatch' ', um Befehle zu erzeugen, die ausgeführt werden. Für weitere Informationen, RTFM . –

Verwandte Themen