|
|
#1 |
|
Oldie
Registriert seit: 11.01.2007
Beiträge: 905
|
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 |
|
|
|
|
|
#2 |
|
Oldie
Registriert seit: 10.01.2003
Beiträge: 2.820
|
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. |
|
|
|
|
|
#3 |
|
Oldie
Registriert seit: 11.01.2007
Beiträge: 905
|
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 Code:
ls /path/*.tar.gz | tac | sed 1,3d | tr '\012' '\000' | xargs -0 --no-run-if-empty rm |
|
|
|
|
|
#4 |
|
Oldie
Registriert seit: 22.04.2001
Beiträge: 1.796
|
Code:
rm `ls -t | awk 'NR>3'` |
|
|
|
|
|
#5 |
|
Oldie
Registriert seit: 11.01.2007
Beiträge: 905
|
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'` |
|
|
|
|
|
#6 |
|
out of this gloomy light
Registriert seit: 31.05.2001
Ort: ...between heaven & hell...
Beiträge: 8.757
|
so einen spez. fall habe ich nicht - nutze einfach bleachbit als CC Cleaner Ersatz.
|
|
|
|
|
|
#7 |
|
Xanatos
Registriert seit: 31.10.2004
Beiträge: 16.420
|
@silentreader:
. und .. ? Änder doch mal in Code:
echo `ls -t *.tar.gz | awk 'NR>3'` |
|
|
|
|
|
#8 |
|
Oldie
Registriert seit: 11.01.2007
Beiträge: 905
|
@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 Somit ist mir die Lösung per awk egal
__________________
Liebe Grüße, Silentreader |
|
|
|
|
|
#9 |
|
out of this gloomy light
Registriert seit: 31.05.2001
Ort: ...between heaven & hell...
Beiträge: 8.757
|
@SilentReader
ist klar. |
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|