[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