Der er lidt af en debat om hvad er hurtigst xargs vs. -exec {}, som er indbygget i at finde sig selv. For mig er det imidlertid ikke meget af en debat; -exec er ikke så godt som xargs Jeg plejer at bruge den til at udføre opgaver, der involverer mange filer. “Flyt alle disse filer der”, “Kopier alle disse mapper der”, “Slet disse links.” Osv.
Det er her -exec bryder sammen, og xargs viser sin overlegenhed. Når du bruger -exec til at udføre arbejdet, kører du en separat forekomst af det kaldte program for hvert element af input. Så hvis du finder op til 10.000 resultater, kører du exec 10.000 gange. Med xargs opbygger du input til bundter og kører dem gennem kommandoen så få gange som muligt, hvilket ofte kun er en gang. Når man beskæftiger sig med hundredvis eller tusindvis af elementer, er det en stor gevinst for xargs.
Det er alt godt og ting, men du vil sikkert se det i aktion, ikke? Lad os køre nogle tal. Nedenfor er en liste over 1.6582. jpg-filer på min ubuntu box ved hjælp af både -exec og xargs:
time find . -name "*.jpg" -exec ls {} + real 0m0,445s user 0m0,290s sys 0m0,119s
Okay næste 0,5 sek. Lad os prøve med xargs i stedet.
time find . -name "*.jpg" -print0 | xargs -0 ls real 0m0,292s user 0m0,255s sys 0m0,157s
0,3 sek. Næsten dublet så hurtigt. Så vi må nok sige at xarg er hurtigere en -exec