mr_kaktus Geschrieben 6. Juli 2006 Teilen Geschrieben 6. Juli 2006 Hi @all, ich würde gerne auf einem Verzeichnis Daten löschen die älter sind als 10 Tage. Leider kann ich nicht mit find -mtime arbeiten, da es mal sein kann, dass diese Daten bearbeitet werde und sich dann das Datum ändert. Die Dateiennamen sind aber mit dem Datum aufgebaut: dateiname_060609 --> Also dateiname_Jahr Monat Tag Gibt es eine Möglichkeit mit dem Dateinamen und das aktuelle Datum die Dateien zu finden die Älter sind als 10 Tage? Erst dachte ich mach Aktuellertag - Anlegedatum_Datei, aber das funkt nicht wirklich Hat mir jemand ein Tip? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lordy Geschrieben 6. Juli 2006 Teilen Geschrieben 6. Juli 2006 Wenn du mit einem einfach Find nicht weiter kommst würde ich auf Perl setzen. Hier gibt es mit Date::Calc ein entsprechendes Modul, das dir die Rechnerei abnimmt, das Löschen ist dann nur noch Formsache. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 6. Juli 2006 Teilen Geschrieben 6. Juli 2006 Bringen dir die find-Optionen -atime oder -ctime auch nichts??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mr_kaktus Geschrieben 7. Juli 2006 Autor Teilen Geschrieben 7. Juli 2006 Hallo Danke für eure Posts, hab das jetzt ganz anders gelöst:DATEI_ALTER=5 AKTUELLES_DATUM=`date +%y%m%d` TAG=`date --date -$DATEI_ALTER\ days +%d` MONAT=`date --date -$DATEI_ALTER\ days +%m` JAHR=`date --date -$DATEI_ALTER\ days +%y` DATUMS_GRENZE=$JAHR$MONAT$TAG DIR="/root/DUMPS/*.dmp" for DATEI in `ls $DIR` do DATEI_DATUM=`echo $DATEI | awk -F "_" '{print $3}'` if (( 10#$DATEI_DATUM <= 10#$DATUMS_GRENZE )) then echo "rm $DATEI" fi done Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kernel-Error Geschrieben 15. Juli 2006 Teilen Geschrieben 15. Juli 2006 Dein Problem scheint zwar schon gelöst! Öhm.. wie Schlaubi schon meinte... Mit find finde ich das etwas schöner gelöst :-) find /home/tausch -type f -atime 10 -exec rm {} \; -type f sagt das es sich nur um Files gehen soll -atime 10 sagt das es nur um Dateien geht die vor 10 Tagen das letzte mal angefasst wurden -mtime kannst du nutzen wenn es darum gehen soll wann die Dateien das letzte mal verändert wurden. atime is ja nur zugriff! Mehr Infos klar: man find Wenn du alles testen willst kannst ja mal rm durch echo ersetzten. Dann wird nicht gelöscht sondern angezeigt :-P MFG Kernel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 15. Juli 2006 Teilen Geschrieben 15. Juli 2006 Hi, find ich auch, aber... Leider kann ich nicht mit find -mtime arbeiten, da es mal sein kann, dass diese Daten bearbeitet werde und sich dann das Datum ändert. ...geht leider nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
charmanta Geschrieben 16. Juli 2006 Teilen Geschrieben 16. Juli 2006 beim find würde ich übrigens -mtime +10 nehmen, sonst löscht er nur Files, die EXAKT vor 10 Tagen modifiziert wurden. Mit +10 löscht er auch ältere Files. Außerdem ist das Laufzeitverhalten des "find" im Vergleich zu obigen Script viel ressourcenschonender ... Schleifen und vor allem der awk ziehen viel mehr Power als ein einziger find Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 16. Juli 2006 Teilen Geschrieben 16. Juli 2006 Versteht den Satz eigentlich keiner? Find kann er nicht benutzen, da die Dateien zwischenzeitlich verändert werden können. Wenn also eine 12 Tage alte Datei vor 5 Tagen geändert wurde, wird "find" die mit mtime,atime oder ctime nicht mehr finden. Das funktioniert nur, wenn die Dateien in diesem Zeitraum nicht verändert wurde. Wenn eine Datei verändert wird, verändert sich sowohl die mtime, die atime als auch die ctime. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.