Ich möchte die Bedeutung wissen , {} +
in dem exec
Befehl, und was ist der Unterschied zwischen {} +
und {} \;
. Um genau zu sein, was ist der Unterschied zwischen diesen beiden:
find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;
man find(1)
sehr detailliert beschrieben und für jedermann leicht zu finden. Sei nicht faul.man exec
!{} +
Verwendung gestoßen. Ich benutze normalerweise xargs dafür (und oftfind ... -print0 | xargs -0 ...
)Antworten:
Die Verwendung von
;
(Semikolon) oder+
(Pluszeichen) ist obligatorisch, um die von-exec
/ aufgerufenen Shell-Befehle zu beendenexecdir
.Der Unterschied zwischen
;
(Semikolon) oder+
(Pluszeichen) besteht darin, wie die Argumente an find's-exec
/-execdir
parameter übergeben werden. Beispielsweise:using
;
führt mehrere Befehle aus (für jedes Argument separat),Beispiel:
using
+
führt die geringstmöglichen Befehle aus (da die Argumente miteinander kombiniert werden). Derxargs
Befehl funktioniert sehr ähnlich. Daher werden so viele Argumente wie möglich pro Befehl verwendet, um zu vermeiden, dass die maximale Anzahl von Argumenten pro Zeile überschritten wird.Beispiel:
Siehe auch:
man find
quelle
Vorausgesetzt, der Befehl find hat weniger als drei Dateien:
Wenn Sie
-exec
mit einem Pluszeichen (+
) verwenden,es wird sein:
Die Befehlszeile wird erstellt, indem jeder übereinstimmende Dateiname am Ende angehängt wird. Dies erfolgt auf die gleiche Weise wie beim
xargs
Erstellen der Befehlszeilen. Die Gesamtzahl der Aufrufe des Befehls (chmod
in diesem Fall) ist viel geringer als die Anzahl der übereinstimmenden Dateien.Wenn Sie
-exec
mit einem Semikolon (;
) verwenden,es wird sein:
quelle
Wie pro
man find
:quelle