Zurück   CC-Community Board > CC-CB Hauptforen > Alternative OS > Linux

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 04.01.2012, 10:27   #1
silentreader
Oldie
 
Registriert seit: 11.01.2007
Beiträge: 905
Standard Ältere Dateien löschen

Hallo,

ich benötige mal Hilfe, da ich nicht weiß, wie ich das bewerkstelligen kann:

Ich habe Dateien im folgenden Format (werden automatisch angelegt):

JJJJ-MM-TT@HH-MM-SS.tar.gz

Es können mehrere pro Tag sein, aber auch mal ein paar Tage oder Wochen keine.

Jedenfalls möchte ich immer die letzten 3 aktuellen Dateien behalten.
Da ich ja nicht nach dem Schema "lösche alle Dateien älter als x Tage" vorgehen kann, weiß ich nicht, wie ich das umsetzen soll.

Kennt sich jemand aus und kann mir helfen?

Vielen Dank im voraus

Geändert von silentreader (01.02.2012 um 19:36 Uhr) Grund: Erledigt
silentreader ist offline   Mit Zitat antworten
Alt 04.01.2012, 11:07   #2
Antitrack
Oldie
 
Registriert seit: 10.01.2003
Beiträge: 2.820
Standard AW: Ältere Dateien löschen

Klarer Fall von alpha-sort für Perl.
(Ich gehe davon aus, dass sich alle Dateien im gleichen Verzeichnis befinden)

a) Dir einlesen : Alle Dateinamen in ein Array
b) Dir-array sortieren
c) Die obersten 3 Array-Einträge mittels POP rausholen
-> somit bleiben die anderen, zu löschenden Sachen, übrig
d) Alle Dateien aus dem Array mit den "übriggebliebenen" Dateinamen löschen.
Antitrack ist offline   Mit Zitat antworten
Alt 04.01.2012, 23:14   #3
silentreader
Oldie
 
Registriert seit: 11.01.2007
Beiträge: 905
Standard AW: Ältere Dateien löschen

Ich dachte da mehr an eine fertige Lösung

Folgende Lösung teste ich gerade und beobachte erstmal, aber scheint zu funktionieren:
Code:
ls /path/*.tar.gz | tac | sed 1,3d | tr '\012' '\000' | xargs -0 --no-run-if-empty echo $1
Wenn es dann wirklich funktioniert, ändere ich es kurz und es müsste exakt das sein, was ich brauche:
Code:
ls /path/*.tar.gz | tac | sed 1,3d | tr '\012' '\000' | xargs -0 --no-run-if-empty rm
silentreader ist offline   Mit Zitat antworten
Alt 04.01.2012, 23:42   #4
Serafin
Oldie
 
Benutzerbild von Serafin
 
Registriert seit: 22.04.2001
Beiträge: 1.796
Standard AW: Ältere Dateien löschen

Code:
rm `ls -t | awk 'NR>3'`
Serafin ist offline   Mit Zitat antworten
Alt 04.01.2012, 23:56   #5
silentreader
Oldie
 
Registriert seit: 11.01.2007
Beiträge: 905
Standard AW: Ältere Dateien löschen

Das sieht ja mal super einfach aus und scheint auch noch zu funktionieren

Komischerweise muss ich aber 'NR>{gewünschter Wert+2}' angeben, ansonsten bleibt nur die letzte Datei übrig.

Habe es mit
Code:
echo `ls -t | awk 'NR>5'`
ausprobiert und das geht.
silentreader ist offline   Mit Zitat antworten
Alt 01.02.2012, 16:22   #6
Tank
out of this gloomy light
 
Benutzerbild von Tank
 
Registriert seit: 31.05.2001
Ort: ...between heaven & hell...
Beiträge: 8.757
Standard AW: Ältere Dateien löschen

so einen spez. fall habe ich nicht - nutze einfach bleachbit als CC Cleaner Ersatz.
Tank ist offline   Mit Zitat antworten
Alt 01.02.2012, 18:54   #7
DrSnuggles
Xanatos
 
Benutzerbild von DrSnuggles
 
Registriert seit: 31.10.2004
Beiträge: 16.420
Standard AW: Ältere Dateien löschen

@silentreader:

. und .. ?

Änder doch mal in
Code:
echo `ls -t *.tar.gz | awk 'NR>3'`
DrSnuggles ist offline   Mit Zitat antworten
Alt 01.02.2012, 19:36   #8
silentreader
Oldie
 
Registriert seit: 11.01.2007
Beiträge: 905
Standard AW: Ältere Dateien löschen

@Tank: Ich habe nur eine Shell. Ist dann eher sinnfrei

@DrSnuggles: Ja, klar, so habe ich es natürlich auch noch probiert. Beim Testen per cronjob hat das aber komischerweise nicht immer funktioniert, manchmal wurde so nichts gefunden, obwohl Dateien vorhanden waren und manchmal musste ich wirklich NR>5 schreiben, um das richtige Ergebnis zu bekommen. Leider konnte ich nicht reproduzieren warum das Verhalten unterschiedlich ist.

Ich habe jetzt seit einigen Wochen problemlos o. g. am Laufen:
Code:
ls /path/*.tar.gz | tac | sed 1,3d | tr '\012' '\000' | xargs -0 --no-run-if-empty rm
Macht genau das was es soll und wird täglich per cronjob ausgeführt.

Somit ist mir die Lösung per awk egal
__________________
Liebe Grüße,
Silentreader
silentreader ist offline   Mit Zitat antworten
Alt 02.02.2012, 08:59   #9
Tank
out of this gloomy light
 
Benutzerbild von Tank
 
Registriert seit: 31.05.2001
Ort: ...between heaven & hell...
Beiträge: 8.757
Standard AW: Ältere Dateien löschen

@SilentReader

ist klar.
Tank ist offline   Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.


vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.