hallo
weist jemand wie ich mit find unter linux dateien nach datum suchen kann und dann zipen?
Mein Problem ist das eine menge Dateien habe in einem verzeichniss und ich muss die dateien von eine woche nicht zippen alle anderen muss ich zurzeit mache ich das perhand und ist sehr aufwendig da auch mehrere verzeichnisse sind
wurde mich freuen wenn mir jemand helfen könnte wie ich das am besten lösen könnte vielleicht mit find nach datum suchen oder so???
Claudia
dateien suchen nach datum ...
Re: dateien suchen nach datum ...
hallo
hallo,
find -mtime +n | -n | n
findet dateien die vor
mehr +n
weniger -n
exakt n
tagen zuletzt verändert wurden.
vielleicht hilfts dir weiter.
hallo,
find -mtime +n | -n | n
findet dateien die vor
mehr +n
weniger -n
exakt n
tagen zuletzt verändert wurden.
vielleicht hilfts dir weiter.
Re: dateien suchen nach datum ...
danke
kann ich danach dierekt die dateien die ich gefunden habe auch zipen aber nur die keine anderen oder muss i ch schleife bauen???
claudia
kann ich danach dierekt die dateien die ich gefunden habe auch zipen aber nur die keine anderen oder muss i ch schleife bauen???
claudia
Re: dateien suchen nach datum ...
"Zippen" ist mittlerweile ja nur nochein Synonym für "Archivieren und Komprimieren. Meinst Du wirklich das ZIP-Format oder verwendest Du tar? Mit zip alleine ist es eigentlich ganz einfach:<pre>zip -rt 07112003 archiv.zip .</pre>Das packt nur Dateien ab dem Arbeitsverzeichnis, die seit dem 07.11.2003 verändert wurden, in das Archiv archiv.zip. Alternativ geht auch ein<pre>zip archiv.zip $(find . -mtime -7 -print)</pre>Methode 1 ist gut bei aboluten Daten geignet, bei relativen Zeiträumen eher Methode 2.
Jochen
Jochen
Re: dateien suchen nach datum ...
leider ist das nicht das was ich wollte!
Ich habe einen Verzeichnis und da drin sind dateien die so anfangen asf-* .
Mein Ziell ist die Dateien die so anfangen zu Zipen aber nur die älteste Dateien d.h. die Dateien von den letzten Sieben Tage bleiben ungezipt alles anderes wird gezipt. Ich habe versucht mit Finf und auch so wie du Vorgeschlagen hast leider ohne erfolg.
Was kann man dagegen noch machen gibt es ein anderen Befehl mit dem ich es lösen könnte???
claudia
Ich habe einen Verzeichnis und da drin sind dateien die so anfangen asf-* .
Mein Ziell ist die Dateien die so anfangen zu Zipen aber nur die älteste Dateien d.h. die Dateien von den letzten Sieben Tage bleiben ungezipt alles anderes wird gezipt. Ich habe versucht mit Finf und auch so wie du Vorgeschlagen hast leider ohne erfolg.
Was kann man dagegen noch machen gibt es ein anderen Befehl mit dem ich es lösen könnte???
claudia
Re: dateien suchen nach datum ...
Ergänze den Befehl von Jochen um ein -name Argument und dann sollte er nur noch die Dateien zippen, die mit asf- beginnen:
zip archiv.zip $(find .-name "asf-*" -mtime -7 -print)
zip archiv.zip $(find .-name "asf-*" -mtime -7 -print)
Re: dateien suchen nach datum ...
danke
noch eine frage wenn ich gzip verwende?
geht das auch so???
gzip asf-* $(find .-name "asf-*" -mtime -7 -print)
ich denke nicht da zuerst gzip ausgeführt wird oder???
noch eine frage wenn ich gzip verwende?
geht das auch so???
gzip asf-* $(find .-name "asf-*" -mtime -7 -print)
ich denke nicht da zuerst gzip ausgeführt wird oder???
Re: dateien suchen nach datum ...
Nein, so kann das gar nicht funktionieren.
Schaud dir doch nochmal ganz genau die Lösung von Jochen an:
zip archiv.zip $(find .-name "asf-*" -mtime -7 -print)
da steht: erstelle ein Archiv namens archiv.zip aus den Dateien, die dir die subshell ()
bzgw. das find Kommando, das in dieser augeführt wird liefert.
gzip asf-* $(find .-name "asf-*" -mtime -7 -print)
Dein Befehl liest sich in etwa so:
Erstelle ein Archiv mit namen asf-1, asf-2, asf-3 ... asf-n jedesmal aus den den Dateien die mir die subshell liefert.
Klappt so nicht weil gzip nur einzelene Dateien komprimiert. Wenn du ein einziges Archiv aus den betreffenden Dateien machen wills musst du es mit tar verbinden:
tar -cvzf archiv.tgz $(find . -name "asf-*" -mtime -7 -print)
baue mir ein tar archiv (komprimiere es mit gzip -z) namens archiv.tgz , nehme hierfür die Dateien aus der subshell ()
Wenn du aber einfach jede Datei einzeln mit gzip behandeln willst ist die -exec option von find dein Freund
find . -name "asf-*" -mtime -7 -exec gzip {} ;<!--no-->
finde alle Dateien mit namen asf-* die vor weniger als 7 Tagen geändert wurden (-name -mtime) und behandle jedes File auf dass diese Kriterien passen mit dem Programm gzip (-exec) Die Klammern {} stehen hierbei für die Suchergebnisse, die find liefert, abgeschlossen mus s immer mit ;<!--no--> werden
So hoffe mal damit sind alle Unklarheiten beseitigt.
Schaud dir doch nochmal ganz genau die Lösung von Jochen an:
zip archiv.zip $(find .-name "asf-*" -mtime -7 -print)
da steht: erstelle ein Archiv namens archiv.zip aus den Dateien, die dir die subshell ()
bzgw. das find Kommando, das in dieser augeführt wird liefert.
gzip asf-* $(find .-name "asf-*" -mtime -7 -print)
Dein Befehl liest sich in etwa so:
Erstelle ein Archiv mit namen asf-1, asf-2, asf-3 ... asf-n jedesmal aus den den Dateien die mir die subshell liefert.
Klappt so nicht weil gzip nur einzelene Dateien komprimiert. Wenn du ein einziges Archiv aus den betreffenden Dateien machen wills musst du es mit tar verbinden:
tar -cvzf archiv.tgz $(find . -name "asf-*" -mtime -7 -print)
baue mir ein tar archiv (komprimiere es mit gzip -z) namens archiv.tgz , nehme hierfür die Dateien aus der subshell ()
Wenn du aber einfach jede Datei einzeln mit gzip behandeln willst ist die -exec option von find dein Freund
find . -name "asf-*" -mtime -7 -exec gzip {} ;<!--no-->
finde alle Dateien mit namen asf-* die vor weniger als 7 Tagen geändert wurden (-name -mtime) und behandle jedes File auf dass diese Kriterien passen mit dem Programm gzip (-exec) Die Klammern {} stehen hierbei für die Suchergebnisse, die find liefert, abgeschlossen mus s immer mit ;<!--no--> werden
So hoffe mal damit sind alle Unklarheiten beseitigt.