# Bash Script



## Spranta (16. Juni 2008)

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ß


----------



## takidoso (23. Juni 2008)

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:


```
#!/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


----------



## takidoso (23. Juni 2008)

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


----------

