Aufgabenplaner Script um ältere Datei zu löschen.

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

peterpan321

Benutzer
Registriert
19. Mai 2018
Beiträge
5
Reaktionspunkte
0
Punkte
0
Guten Tag,
ich habe mehrere Dateien in einem Verzeichnis.
Jetzt möchte ich ein Aufgabenplaner script erstellen, welches immer wenn es ausgeführt wird, alle Dateien löscht - bis auf die neuste. Dass also nur die neuste Datei überbleibt.
Kann mir da jemand behilflich sein?

Ich hatte schon folgendes probiert:
ls -td /pfad/* |tail -n 1|xargs rm -rf

Vielen Dank
peterpan321
 
Willkommen im Forum!

Werden die Dateien in konstantem Abstand erstellt - also z.B. täglich? Wenn ja ließe sich das mit einem find lösen.
 
Nein, werden sie nicht :/ Der Befehl mit mtime/atime ist leider nicht meine Wunschvorstellung :eek:
 
Ich habe ein Script zum Aufräumen von alten Backups im Einsatz. Es kontrolliert Dateien in einem Verzeichnis und löscht bis auf eine festgelegte Anzahl alle älteren Dateien.

Rich (BBCode):
KEEP=ANZAHL
BACKUPS=`find /volume1/ORDNER -name "DATEI" | wc -l | sed 's/\ //g'`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /volume1/ORDNER/DATEI | head -n 1 | xargs rm -f 
BACKUPS=`expr $BACKUPS - 1` 
done

ANZAHL => Anzahl der zu behaltenen Dateien
DATEI => Dateiname
ORDNER => Ordner deiner Wahl

Die Dateinamen beinhalten bei mir u.a. das Datum. So gebe ich mit Sternchen nur einen Teil vom Dateinamen an (z.b. backup-horst-*.tgz statt backup-horst-20180519.tgz).
 
Schon mal vielen Dank, das sieht schon ganz gut aus.

Rich (BBCode):
KEEP=1
BACKUPS=`find /volume1/Ich/Ordner -name "*" | wc -l | sed 's/\ //g'`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /volume1/Ich/Ordner/* | head -n 1 | xargs rm -f 
BACKUPS=`expr $BACKUPS - 1` 
done

Ich habs jetzt mal so probiert, aber das funktioniert leider noch nicht
 
Mit nur einem Sternchen habe ich es nie probiert, sollte von der Logik her aber funktionieren.

Stell mal keep auf 2, da im Script noch einmal 1 abgezogen wird.
 
Habs jetzt noch mal probiert, es dann noch etwas umgeschrieben:

KEEP=2
BACKUPS=`find /volume1/Ich/Ordner -type f | wc -l`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /volume1/Ich/Ordner/* | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`
done

aber das ist leider auch keine Lösung..
 
leider nicht meine Wunschvorstellung
funktioniert leider noch nicht
das ist leider auch keine Lösung
leider, leider, leider... nicht meine Wunschvorstellung, funktioniert nicht, keine Lösung...
Das ist kein konstruktives Feedback, geschweige eine Mitarbeit, sondern die Erwartungshaltung ohne nennenswerte Eigenarbeit eine fertige Lösung präsentiert zu bekommen.
Ich bin nicht der Schlaraffenlandlieferant und stochere auch nicht gerne im Nebel rum. Daher bin ich hier doppelt raus.

Da es um ein herstellerunabhängiges Problem geht, empfehle ich ein Linuxforum zu besuchen oder einen Progger zu kontaktieren.
 
Vielen Dank. Leider ist das jetzt auch keine Hilfe. Dann muss ich leider wo anders Fragen.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat