snafu1 schrieb:
Vielleicht noch der Hinweis, dass -exec
in Verbindung mit +
die gefundenen Pfade in einem Rutsch an das übergebene Kommando hängt. Das sorgt einerseits dafür, dass der Befehl (hier: tar
) nur einmal aufgerufen wird (anstatt für jede Fundstelle einzeln).
Nochmal, tar
wird seltener aufgerufen als wenn man statt "+" "\;" verwendet, aber es ist nicht garantiert, dass es genau ein Mal aufgerufen wird! Das muss man berücksichtigen. Deshalb meine Anmerkung mit dem "r" statt "c". Mach Dir mal den Spaß und führe folgendes auf Deinem System aus:
| find / -exec dash -c 'echo $#' -- {} + 2>/dev/null | awk 'BEGIN {s=c=0} { s+=$1;c+=1 } END {print s, c, s/c}'
|
Dann siehst Du, wie oft find
tatsächlich forkt und wie viele Argumente bei jedem Aufruf übergeben werden. Bei mir kommt dabei heraus
377178 161 2342.72
Man sieht, es sind 161 Aufrufe mit durchschnittlich ungefähr 2342 Dateinamen pro Aufruf.
Andererseits aber kann es dazu führen, dass die Dateien auch erst ganz am Ende wieder gelöscht werden. Da muss man die Doku seines Packtools genau studieren. Wenn tar
immer direkt nach dem Packen einer Datei löscht, ist das natürlich gut. Ich wollt nur drauf hingewiesen haben. ☺
Ich würde es ausprobieren, und wenn es nicht klappt "+" durch "\;" ersetzen. Es muss aber bei tar
zwingend "r" statt "c" verwendet werden, weil man sonst am Ende ein Archiv hat, in dem nicht alle Dateien enthalten sind, die gelöscht wurden. 😬
Ciao
robert