xargs eller. exec {}

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

 

Author:

Jeg er en professionel system administrator og grundlægger af linuxboxen.dk Jeg er en ivrig Linux-elsker og open source-entusiast. Jeg bruger Ubuntu og tror på at dele viden. Bortset fra Linux, elsker musik og dyr. Jeg er en stor fan af Dire straits.

Skriv et svar