Ich möchte Protokolldateien, die älter als 5 Tage sind, aus einem Verzeichnis löschen. Das Löschen sollte jedoch nicht auf dem Zeitstempel der Datei basieren. Es sollte auf dem Namen der Datei basieren. Für das Beispiel heutigen Datum 07.05.2012 ist und das Verzeichnis enthält 10 Dateien von Namen wie ABC_20120430.log
, ABC_20120429.log
, ABC_20120502.log
, ABC_20120320.log
usw. Ich mag die Dateien entfernen können , indem Sie das Datum aus dem Namen der Datei zu extrahieren.
10
Ich denke, @oHessling hat es fast geschafft : Analysieren Sie ls nicht , und Sie können mehr in bash tun:
quelle
four_days=$(echo "puts [clock format [clock scan {4 days ago}] -format %Y%m%d]" | tclsh)
Ein Weg mit
perl
:Inhalt von
script.pl
:Um es zu testen, erstelle ich einige Dateien:
Überprüfen Sie sie mit
ls -1
:Führen Sie das Skript wie folgt aus:
Mit folgender Ausgabe:
quelle
Sie können stattdessen die Tatsache verwenden, dass Ihre Dateinamen in chronologischer Reihenfolge sortiert werden. Zum Beispiel, um die letzten 5 Dateien zu behalten:
quelle
rm
sei denn, Sie wissen, dass Sie jedes Mal Kätzchen töten. Es ist nur eine schlechte Idee, wenn Sie nicht wissen, warum Sie recherchieren und lernen, dass es immer bessere Möglichkeiten gibt, sich einem Problem zu nähern, für das dies eine Lösung sein könnte.