Jürgen Vollmer wrote:
[...] und dann eben noch xargs und grep
find directory -name "*.c" | xargs grep gesuchter-string
Thomas Hertweck
Wieso brauche ich dazu xargs und die Pipe? Das kann find doch direkt:
find directory -name "*.c" -exec grep -H gesuchterstring {} \;
Der Grund ist: bei exec wird jedesmal ein neuer Prozess gestartet, bei xargs eben nur soviele wie nötig sind umd die maximale Länge der Kommandozeile nicht zu überschreiten. Wenn man also sagen wir 20.000 Dateien dann geht das schon in die Zeit: $ time find /usr/include -name "*.h" -exec grep -q foo \{\} \; real 0m28.483s user 0m7.690s sys 0m10.600s $time find /usr/include -name "*.h" | xargs grep -q foo real 0m0.201s user 0m0.070s sys 0m0.080s Im übrigen vergesse ich immer die \ bei { } und ; im exec :-)
Das -H sollte man wohl auch bei Deinem Fefehl benutzen, oder? Sonst habe ich zwar einen Match, weiss aber nicht in welcher Da- tei... wie man will.
Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 juergen@informatik-vollmer.de,vollmer@cocolab.de,Juergen.Vollmer@acm.org www.informatik-vollmer.de