next up previous contents index
Volgende: 7.5 Locate Omhoog: 7 GNU-utilities Vorige: 7.3 Find   Inhoudsopgave   Index

7.4 Xargs

De exec-optie van find voert per gevonden bestand een bepaald commando uit. Xargs daarentegen voert een bepaald commando uit op vele bestanden. Dat gaat aanzienlijk sneller. Het voorbeeld bij exec kan met xargs zo worden gedaan: find /usr/src/linux -name "*.c" $\vert$ xargs grep -l foo. Het $\vert$-teken zorgt ervoor dat de output van het ene programma wordt doorgegeven aan het andere programma.

Bestandsnamen (en directorynamen) met spaties erin zullen xargs verwarren, omdat hij spaties ziet als een teken dat de volgende bestandsnaam eraan komt. Om dat probleem te verhelpen moet je de optie -print0 (met het cijfer nul, niet de letter o) gebruiken i.p.v. -print bij grep (zodat er een null characters tussen de bestandsnamen komt) en de optie -0 bij xargs, zodat xargs het null character ziet als bestandsnaamonderscheider.

Normaal gesproken werkt xargs automatisch, maar door commando's als rm kan om bevestiging gevraagd worden. Gebruik dan de optie p om xargs interactief te maken.

Het commando grep -l foo `find /usr/src/linux -name "*.c" ' zal mislukken, doordat het commando tussen backquotes een langere output heeft dan de maximale lengte die een commando mag hebben.


next up previous contents index
Volgende: 7.5 Locate Omhoog: 7 GNU-utilities Vorige: 7.3 Find   Inhoudsopgave   Index
Jarkko Huijts 2002-08-17