[linux-l] xargs

Volker Grabsch vog at notjusthosting.com
Mo Apr 21 15:40:03 CEST 2008


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.


Gruß,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l