* On Thu, 17 Jul 2003 at 17:23 +0200, Ekkard Gerlach wrote:
* Erhard Schwenk schrieb:
Zitat von Ekkard Gerlach
: [...] find /work -iname "*" -mtime -1 -type f|xargs tar cf archive.tar --atime-preserve tar: /work/A/datei: Cannot stat: No such file or directory [...]
Nimm mal das hier: find /work -iname "*" -mtime -1 -type f -print0|xargs -0 tar cf archive.tar --atime-preserve xargs erwartet normal auf stdin eine Liste von Dateinamen, die durch Whitespace separiert sind (also z.B. Leerzeichen oder Zeilenumbrüche) -> das funktioniert mit Leerzeichen in Dateinamen nicht. Mit -print0 wird find instruiert, die Dateinamen nicht durch Zeilenumbrüche, sondern durch Nullbytes zu separieren; -0 sagt xargs dann, daß es nur an Nullbytes trenn soll. Nachdem ein Dateiname sowieso kein Nullbyte enthalten kann, kriegst Du so alle möglichen Dateinamen durch.
Evtl. kann man auch noch ein -exec echo \"{}\" \; ins find einbauen, sollte aber IMHO eigentlich nicht erforderlich sein.
Hurrah!! mit -exec echo \"{}\" \; und mit Erstellung eines ARchives archive.tar im Gespann gehts!!! Danach kann ich es gewöhnlich wieder auspacken und habe datei 1.txt, ....
Was macht eigentlich -exec echo \"{}\" \; ?
Es wird jeder Dateiname in Anführungszeichen verpackt ausgegeben. Rufs mal einfach ohne das |xargs auf, dann siehst Du, was ich meine. /apm -- GPG welcome, request public key: mailto:adalbert+key@lopez.at