Hi zusammen, hier ist meine Kommando-Zeile: find dir1 dir2 dir3 -name "*.c" -mtime +7 | tar cvf /tmp/c.tar - Sie funktioniert aber nicht. Wo kann der Fehler sein? Dank. matthias
Hi, Matthias Dort schrieb:
hier ist meine Kommando-Zeile:
find dir1 dir2 dir3 -name "*.c" -mtime +7 | tar cvf /tmp/c.tar -
Sie funktioniert aber nicht. Wo kann der Fehler sein?
Ich vermute mal ins Blaue, dass tar so die Standardausgabe verpackt, also die mittels find gefundenen Dateinamen (also nur ein Bisschen Text). Vielleicht geht es mit find dir1 dir2 dir3 -name "*.c" -mtime +7 | xargs tar cvf /tmp/c.tar Ré -- Registered Linux User #324404
Matthias Dort schrieb:
hier ist meine Kommando-Zeile: find dir1 dir2 dir3 -name "*.c" -mtime +7 | tar cvf /tmp/c.tar - Sie funktioniert aber nicht. Wo kann der Fehler sein?
René Matthäi
Ich vermute mal ins Blaue, dass tar so die Standardausgabe verpackt,
korrekt.
also die mittels find gefundenen Dateinamen (also nur ein Bisschen Text). Vielleicht geht es mit
find dir1 dir2 dir3 -name "*.c" -mtime +7 | xargs tar cvf /tmp/c.tar
Das funktioniert aber nur vielleicht :-) Werden sehr viele Dateien gefunden, startet xargs mehrere Prozesse (nach einander) jeweils mit einem Teil der Dateinamen. Folge: "übrigbleibt" nur das tar-Archiv des letzten Aufrufs. besser wäre z.B. find dir1 dir2 dir3 -name "*.c" -mtime +7 > /tmp/files.txt tar -cvf /tmp/c.tar -T /tmp/files.txt -T, --files-from=F get names to extract or create from file F aber warum so kompliziert? tar kennt doch auch: und mit "date" kann man auch rechnen: date -d "-7 days" tar -cvf /tmp/c.tar --newer-mtime=`date -d "-7 days" +"%Y/%m/%d"` dir1 dir2 Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@[informatik-vollmer.de|alumni.uni-karlsruhe.de|acm.org] www.informatik-vollmer.de
On Mon, 9 Feb 2004, Dr. Jürgen Vollmer wrote:
Matthias Dort schrieb:
hier ist meine Kommando-Zeile: find dir1 dir2 dir3 -name "*.c" -mtime +7 | tar cvf /tmp/c.tar - Sie funktioniert aber nicht. Wo kann der Fehler sein?
René Matthäi
Ich vermute mal ins Blaue, dass tar so die Standardausgabe verpackt,
korrekt.
also die mittels find gefundenen Dateinamen (also nur ein Bisschen Text). Vielleicht geht es mit
find dir1 dir2 dir3 -name "*.c" -mtime +7 | xargs tar cvf /tmp/c.tar
Das funktioniert aber nur vielleicht :-)
Werden sehr viele Dateien gefunden, startet xargs mehrere Prozesse (nach einander) jeweils mit einem Teil der Dateinamen. Folge: "übrigbleibt" nur das tar-Archiv des letzten Aufrufs.
besser wäre z.B.
find dir1 dir2 dir3 -name "*.c" -mtime +7 > /tmp/files.txt tar -cvf /tmp/c.tar -T /tmp/files.txt
-T, --files-from=F get names to extract or create from file F
aber warum so kompliziert? tar kennt doch auch: und mit "date" kann man auch rechnen: date -d "-7 days"
tar -cvf /tmp/c.tar --newer-mtime=`date -d "-7 days" +"%Y/%m/%d"` dir1 dir2
Jürgen
Wunderbar! Schönen Dank, René und Jürgen!
-- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@[informatik-vollmer.de|alumni.uni-karlsruhe.de|acm.org] www.informatik-vollmer.de
Hallo, Am Mon, 09 Feb 2004, Dr. Jürgen Vollmer schrieb:
Matthias Dort schrieb:
hier ist meine Kommando-Zeile: find dir1 dir2 dir3 -name "*.c" -mtime +7 | tar cvf /tmp/c.tar - Sie funktioniert aber nicht. Wo kann der Fehler sein? [..] find dir1 dir2 dir3 -name "*.c" -mtime +7 > /tmp/files.txt tar -cvf /tmp/c.tar -T /tmp/files.txt
Wozu die Temp-Datei? find ... | tar cvf /tmp/c.tar -T -
-T, --files-from=F get names to extract or create from file F
Und die "Datei" darf auch stdin sein ;)
aber warum so kompliziert?
Mit find lassen sich noch mehr Sachen anstellen ;) -dnh -- Die Steuern müssen nicht gesenkt werden, die Steuern müssen bezahlt werden! -- Volker Pispers in "Scheibenwischer"
Am Montag, 9. Februar 2004 12:05 schrieb Dr. Jürgen Vollmer:
Matthias Dort schrieb:
hier ist meine Kommando-Zeile: find dir1 dir2 dir3 -name "*.c" -mtime +7 | tar cvf /tmp/c.tar - Sie funktioniert aber nicht. Wo kann der Fehler sein? [...] besser wäre z.B.
find dir1 dir2 dir3 -name "*.c" -mtime +7 > /tmp/files.txt tar -cvf /tmp/c.tar -T /tmp/files.txt
-T, --files-from=F get names to extract or create from file F
aber warum so kompliziert? tar kennt doch auch: und mit "date" kann man auch rechnen: date -d "-7 days"
tar -cvf /tmp/c.tar --newer-mtime=`date -d "-7 days" +"%Y/%m/%d"` dir1 dir2
Warum so kompliziert - mit den tar-Optionen kriegst Du nie die gesamte Funktionalität vom find abgedeckt. Du kannst der Option -T aber ohne Probleme ein - nachstellen: find dir1 dir2 dir3 -name "*.c" -mtime +7 | \ tar -cvf /tmp/c.tar -T - Der Vollständigkeit halber noch die Ur-Unix-Version mit dem unbekannten Wesen cpio: find dir1 dir2 dir3 -name "*.c" -mtime +7 | cpio -ocBv >/tmp/c.cpio Jan
*** Matthias Dort (lxlist@inz2cl01.rzffm.db.de) schrieb heute in suse-linux:
[...] hier ist meine Kommando-Zeile:
find dir1 dir2 dir3 -name "*.c" -mtime +7 | tar cvf /tmp/c.tar -
Sie funktioniert aber nicht. Wo kann der Fehler sein?
Bei mir sagt die Fehlermeldung haargenau, wo der Fehler liegt. Bei Dir vermutlich ebenfalls. find dir1 dir2 dir3 -name "*.c" -mtime +7 | tar cvfT /tmp/c.tar - tut das, was Du haben möchtest. Das "warum" kannst Du in "man tar" nachlesen. MG Henning Hucke PS: IMHO _wieder_ ein Fall, von "lesen bildet". Sorry. PPS: Vorsicht! Die Sig enthält einen gaaanz böse drei-Zeilen-Virus! -- begin LOVE-LETTER-FOR-YOU.txt.vbs M:'1T<#HO+W!I;VQO9WDN;W)G+TE,3U9%64]5+5-I9VYA='5R92U&05$N:'1M ";`H` ` end Gegen Schrottsoftware. Gegen Luser (man lart). http://piology.org/ILOVEYOU-Signature-FAQ.html
participants (6)
-
David Haller
-
Dr. Jürgen Vollmer
-
Henning Hucke
-
Jan.Trippler@t-online.de
-
Matthias Dort
-
René Matthäi