Hi Thomas! On Wed, 05 Sep 2007, Thomas Michalka wrote:
Am Mittwoch, 5. September 2007 21:44 schrieb Christian Brabandt:
On Wed, 05 Sep 2007, Horst Templer wrote:
find <verzeichnis> -type f -name "<Muster>" -exec cp {} <Ziel> \; Ist aber wirklich nicht gerade resourcen schonend das ganze.
Hinreichend neue finds unterstüzen auch + anstelle von \;
[...]
Wenn ich das richtig verstehe, dann hängt find jeden gefundenen Dateinamen (base) an das Ende des Kommandos. Damit wäre ein cp <Filelist> <Zielpfad> in -exec nicht möglich, weil <Zielpfad> als DIRECTORY das letzte Argument von cp sein muß. Nur so läßt sich eine Liste von Dateien gemeinsam in ein Verzeichnis kopieren (man cp).
Tatsächlich. Irgendwie dachte ich, dass beide Versionen synonym zu benutzen sind. Also bleibt doch wieder xargs.
Außerdem stellt sich mir die Frage, ob man dann nicht auch gerade wieder die Situation hergestellt hat, die zur Frage eingangs der Diskussion führte, nämlich zu viele Argumente (bzw. zu lange Argumentliste) für cp.
Nein, find sorgt dafür dass ARG_MAX nicht erreicht wird.
Abgesehen von diesen Spitzfindigkeiten finde ich die schon genannte Lösung mit rsync wesentlich eleganter. Wenn man die SOURCE-Files doch noch nicht gleich löscht, dann kann man rsync nochmal anwenden, und es werden nur noch die neu hinzugekommenen Dateien übertragen. Das spart dann erst richtig Zeit. Wenn es nicht zu berücksichtigende Unterverzeichnisse gibt, geht Ausschluß der
Übertragung der Dateien bei rsync mindestens genauso elegant, wie bei find.
Klar, ich würde find benutzen, weil das halt immer vorhanden ist. Rsync ist natürlich genauso geeignet. Mit freundlichen Grüßen, Christian -- hundred-and-one symptoms of being an internet addict: 241. You try to look for Net Search even when you're in File Manager. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org