«

»

Dez
11

logrotate Dateien invertiert ausgeben

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.

Hinterlasse eine Antwort

Ihre E-Mail-Adresse wird nicht veröffentlicht.

Sie können diese HTML-Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

What is 3 + 2 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)