[linux-l] xargs
Ivan F. Villanueva B.
iv at artificialidea.com
Di Apr 22 21:22:09 CEST 2008
Am Mon, Apr 21, 2008 03:40:03PM +0200, Volker Grabsch schrieb:
> On Sat, Apr 19, 2008 at 03:28:32PM +0200, Ivan F. Villanueva B. wrote:
> [...]
> > > > > find -type f | xargs -d '\n' grep -i copyright
> > > [...]
> > > "find -type f" erzeugt eine Liste aller Files
> > > "xargs -d '\n' grep -i copyright" zerscheidet diese liste an jedem Newline
> > > da -d '\n' und führt fuer jeden Schnipsel "grep -i copyright [Schnipsel]" aus.
> >
> > Ich verstehe. Aber wenn die Liste sehr lang ist, gibt es keine Probleme?
>
> Grundsätzlich ja, weil dann das grep-Kommando zu viele Argumente
> erhalten würde, sodass irgendwann der argv-Puffer nicht groß genug
> ist.
>
> Praktisch aber passiert das nicht, weil xargs intelligent genug
> ist, das angegebene Kommando (hier: grep) mehrmals zu starten.
>
> Vereinfach gesagt: Wenn du 2500 Dateien hast, gibt es 3 Aufrufe
> von grep:
>
> grep -i copyright datei1 ... datei500 ... datei1000
> grep -i copyright datei1001 ... datei1500 ... datei2000
> grep -i copyright datei2001 ... datei2500
>
> Natürlich liegt die Grenze nicht genau bei 1000, aber ich denke,
> das Prinzip ist klar. Über die xargs-Optionen -L, -l, -s und -x
> kann man dieses Verhalten aber beeinflussen. Mehr Infos: man xargs.
Sehr gut erklärt. Danke. Jetzt habe ich Lust bekommen, "man xargs" zu
lesen.
--
Iván F. Villanueva B.
Mehr Informationen über die Mailingliste linux-l