alte Dateien loeschen
Ich überlege mir, wie ich am einfachsten nicht mehr benötigte Dateien löschen kann. Mit ls -1t *.gz 2>&1 | tee filelist liste ich die neueste Text-Datei im File txtlist ganz oben und chronologisch nach dem Alter geht es weiter. Um folgende Dateien geht es nicht, aber als Beispiel: cat filelist messages-20030910.gz warn-20030910.gz messages-20030907.gz mail-20030904.gz mail.info-20030904.gz messages-20030903.gz warn-20030903.gz wtmp-20030902.gz Die 1. Datei soll in eine Variable geschrieben werden und dann in ein anderes Verzeichnis kopiert werden. Die 2.-4. Datei soll zB erhalten bleiben und ab der 5. Datei sollen alle gelöscht werden. Hat wer bitte Hinweise dazu? Vielleicht kann man das auch besser organisieren. Die Datei lege ich deswegen an, um ein Log zu haben, was vorhanden war. Al -- Infos zu Softwarepatenten: http://swpat.ffii.org/index.de.html http://petition.eurolinux.org/index.html?LANG=de
Am Freitag, 12. September 2003 13:20 schrieb Al Bogner:
Mit ls -1t *.gz 2>&1 | tee filelist
liste ich die neueste Text-Datei im File txtlist ganz oben und chronologisch nach dem Alter geht es weiter.
Tut mir leid, beim Suchen nach einem neutralen Beispiel, habe ich da etwas durcheinander gebracht. Aber ist ja egal, ob es nun txt oder gz oder was auch immer ist. Al
Hallo Al, hallo Leute, Am Freitag 12 September 2003 13:20 schrieb Al Bogner:
Mit ls -1t *.gz 2>&1 | tee filelist
liste ich die neueste Text-Datei im File txtlist ganz oben und chronologisch nach dem Alter geht es weiter.
Um folgende Dateien geht es nicht, aber als Beispiel:
cat filelist messages-20030910.gz warn-20030910.gz messages-20030907.gz mail-20030904.gz mail.info-20030904.gz messages-20030903.gz warn-20030903.gz wtmp-20030902.gz
Die 1. Datei soll in eine Variable geschrieben werden und dann in ein anderes Verzeichnis kopiert werden.
erstedatei="`head -n1 filelist`" cp "$erstedatei" irgendwo/
Die 2.-4. Datei soll zB erhalten bleiben
erhalten="`sed -n '2,4p' filelist`"
und ab der 5. Datei sollen alle gelöscht werden.
sed -n '5,$p' filelist | xargs rm # löscht die Dateien sofort! Falls die Dateinamen Leerzeichen enthalten, solltest Du besser sed -n '5,$p filelist | while read line ; do rm "$line" ; done verwenden, xargs hat damit evtl. Probleme (ungetestet) Zur Erklärung: ich hantiere hier mit dem Bereichsoperator von sed. Hierbei bedeutet eine Zahl eine Zeilennummer und $ die letzte Zeile. Außerdem könnte man auch nach RegExen den Bereich festlegen. 1,/test/ liefert alles von der ersten Zeile bis zu einer Zeile, die "test" enthält Durch das "-n" gibt sed erstmal keine Zeilen aus, danach kann ich mit dem Befehl "p" ("print") die gewünschten Zeilen ausgeben lassen.
Hat wer bitte Hinweise dazu? Vielleicht kann man das auch besser organisieren. Die Datei lege ich deswegen an, um ein Log zu haben, was vorhanden war.
Und was hast Du von dem Log, wenn die zugehörige Datei nicht mehr existiert? *SCNR* Gruß Christian Boltz -- Du hast die Freiheit, alles zu schreiben. Ich habe die Freiheit, alles zu ignorieren. [Stephan Lange in dsn]
participants (2)
-
Al Bogner
-
Christian Boltz