Hallo Rupert,
Wir haben viele Produktionsfiles. Solche mit einer bestimmten
Buchstabenkombination im Namen und mit einem Datum „von“ bis
zu einem Datum „bis“, das auch über Monats- und Jahresgrenzen
von „von“ entfernt sein kann, sollen gelöscht werden.
Ich würde so anfangen (ziemliche Frickelei):
-
Den Zeitraum in UNIXzeit bestimmen in dem die Daten gelöscht werden sollen z.B. vom 1.1.2001 bis 1.1.2003
Das wäre dann
martin@cleopatra:~> date -d „1 Jan 2001“ +%s
von=978303600
martin@cleopatra:~> date -d „1 Jan 2003“ +%s
bis=1041375600
-
Dann eine Liste aller Dateien mit dem Suchstring erstellen
find /dir -ls | egrep „regex“ | awk ‚{print $8 $9 $10 $11}‘
die Ausgabe sieht dann so aus:
208 Nov 30 2001 ./.dvipsrc
Dez 11 09:31 ./sendmail.tar.gz
Aus der Ausgabe das Datum rausparsen, mit dem Zeitraum abgleichen und ggf. löschen.
for i in `awk '{print $0}'
do
echo $i | awk '{print $1 $2 $3}' | egrep "\*:\*"
if [$? = 0]; then
fTime=`echo $i | awk '{print $2 $1" 2003"}'`
else
fTime=`echo $i | awk '{print $2 $1 $3}'`
fi
if [`date -d "$fTime"` -lt $bis && `date -d "$fTime"` -gt $bis]; then
rm `echo $i | awk '{print $4}'`
fi
done
Geht sowas überhaupt mit Unix (Solaris) allein oder braucht
man noch awk/perl? Hat schon jemand sowas gemacht oder sonst
eine gute Idee?
Ob die Idee gute ist wage ich zu bezweifeln…aber es sollte funktionieren.
Grüße
Martin