Was ist +
in find /path/ -exec command '{}' +
do? im Gegensatz zufind /path/ -exec command '{}' \;
Was ist +
in find /path/ -exec command '{}' +
do? im Gegensatz zufind /path/ -exec command '{}' \;
Antworten:
Das '+' setzt aus allen gefundenen Dateien eine große Befehlszeile, um die Anzahl der auszuführenden Befehle zu minimieren.
Vorausgesetzt, ein find-Befehl findet vier Dateien.
find . -type f -exec command '{}' \;
würde produzieren
command file1
command file2
command file3
command file4
Auf der anderen Seite
find . -type f -exec command '{}' \+
produziert
command file1 file2 file3 file4
Von der Manpage:
-exec Befehl {} +
Diese Variante der Aktion -exec führt den angegebenen Befehl für die ausgewählten Dateien aus, die Befehlszeile wird jedoch erstellt, indem jeder ausgewählte Dateiname am Ende angehängt wird. Die Gesamtzahl der Aufrufe des Befehls ist viel geringer als die Anzahl der übereinstimmenden Dateien. Die Befehlszeile ist in etwa so aufgebaut wie die Befehlszeilen von xargs. Innerhalb des Befehls ist nur eine Instanz von "{}" zulässig. Der Befehl wird im Startverzeichnis ausgeführt.
find
gibt mir ein semi.
xargs
,-exec … {} +
tun Sie dasselbe wie-print | xargs …
, aber ohne die Anführungszeichen (-print0 | xargs -0
ist eine andere Möglichkeit, aber weniger portabel).