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.
Letzte Kommentare