[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