
Angenommen, ich habe Protokolldateien mit diesem Namensformat.
NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30
NameLog.log.2014-10-01
NameLog.log.2014-10-02
NameLog.log.2014-10-03
NameLog.log.2014-10-04
Ich möchte nur die Protokolldatei löschen
NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30
Eigentlich möchte ich, dass das Dateiprotokoll nur 30 Dateien speichert. Wie kann ich das mit einem bash
Skript lösen?
Antwort1
Der einfachste Weg, Ihr Ziel zu erreichen, besteht darin, alle Dateien im Verzeichnis zu löschen, die älter als 30 Tage sind. Sie können diesen find
Befehl verwenden:
find /path/to/log/ -maxdepth 1 -name "NameLog.log*" -mtime +30 -delete
Erläuterung:(sehen:erklärtshell)
-maxdepth 1
: nicht tiefer in die Ordnerstruktur einsteigen-name "NameLog.log*"
: gilt nur für Protokolldateien mit diesem Namen-mtime +30
: deren Änderungszeitpunkt älter als 30 Tage ist-delete
: Lösche sie