Thread Anfängerfrage
(7 answers)
Opened by Gast at 2007-06-08 03:11
find(1) mit -exec in dieser Form ist ziemlich ineffizient, weil für jedes Ergebnis (also jede einzelne Datei) das Argument in einer eigenen Subshell gestartet wird. Sofern ein GNU find(1) benutzt wird, dass diese Möglichkeit bietet, sollte man statt des \; am Ende ein + notieren. Das bewirkt nämlich, dass das Argument so wenige Male wie möglich, mit der jeweils maximal möglichen Anzahl an Argumenten aufgerufen wird, so wie es auch xargs(1) macht.
xargs(1) hatte ich bisher aber auf mehr Systemen zur Verfügung; die find(1) Variante mit + scheint es noch nicht so lange zu geben. Du kannst ja mal benchmarken, da liegen Welten zwischen der Lösung mit find ... -exec ... \; einerseits und find ... -exec ... + bzw. find ... | xargs ... andererseits (die letzten beiden sind ziemlich gleich schnell). |