Ralf Hüsing

Dezember 11, 2006

logrotate Dateien invertiert ausgeben

Abgelegt unter: Programmierung — ralf @ 10:33 pm

Logrotate erstellt Dateien im Format von beispielsweise:

Datei.11.gz
Datei.10.gz
Datei.9.gz
...
Datei.2.gz
Datei.1
Datei

Möchte man nun Script gesteuert diese ganzen rotiertierten Dateien zu einer Datei verketten muss man diese Dateiliste verkehrt herum abarbeiten und den Inhalt mit zcat bzw. cat in eine neue Datei verschieben.

Ein großes Problem hierbei ist das invertierte Durchlaufen der Dateien. Ein sortiertes ls bzw. die Verwendung von sort hilft hier nicht wirklich weiter.

Folgender kleiner Shell/Perl Schnippsel löst das Problem:

for log in $(ls -1 Datei* | perl -lne '{/\d+/;$s[$&]=$_}END{print while$_=pop@s}’); do
# was auch immer nun $log getan werden soll
done

Geht der Perl Code kürzer?

Mit dank an Paul Buetow für den Tipp dass man bei Perl’s while keine Klammern benötigt.

Keine Kommentare »

Noch keine Kommentare.

RSS-Feed für Kommentare zu diesem Artikel. TrackBack-URL

Einen Kommentar hinterlassen

Powered by WordPress ( WordPress Deutschland )