Bash Script

Spranta

Erfahrenes Mitglied
Moin

ich erstelle mit einem Script Dateien nach dem Muster "Backup_2008_01_01.zip" nun möchte ich gerne das nur die aktuellesten 10 bleiben und die älteren eben immer gelöscht wie stelle ich dies an?

Gruß
 
hi
bin zwar auch alles andere als ein Script-Künstler (ich finde diese unix-shell-Sprachen einfach zu kryptisch und manchmal zu sehr mit "unexpected behaviour" behaftet)
aber meine Lösung zu Deinem Problem, wenn ich es richtig verstanden haben sollte ist folgende:

Code:
#!/bin/bash

cd $1
pattern=$2
x=$3


echo `pwd`

for f in $(ls -t $pattern)
do
   if [[ x -le 0 ]]
   then
      rm $f
   else
      let x--
   fi
done

wobei wie Du siehst das Programm mit 3 Parametern aufgerufen werden soll.
Besispiel:
remain_latest.sh test lala* 5
(würde die jünsten 5 Dateien stehen lassen die mit "lala" beginnen und in einem Verzeichnis test (relativ zum aktuellen Verzeichnis) stehen.

Viel Spaß

Takidoso
 
Zuletzt bearbeitet:
die obige Lösung hat allerdings di eREstriction, dass die Dateien tatsächlich in ihrem Zeitstempel, den sie vom Dateisystem bekommen sich unterscheiden. bie den allermeisten Unixsystemen ist dies wohl ein Unterschied von mindestens einer Sekunde.
Da Du offenbar von der Zeitgranularität einen Tag definierst sollte dies aber für Deine Zwecke keinen Abbruch tun.

Takidoso
 

Neue Beiträge

Zurück