Ich hatte in der Vergangenheit öfter Dateien unter Linux, welche einen neuen Dateiennamen mit dynamischen Namensteil erhalten mussten. Ursprung der Aufgabe war ein Tool, welches immer in ein Logfile geschrieben hat, ohne dieses pro Tag neu anzulegen. Dieses wollte ich täglich mittels cronjob wegsichern.

Datum in Dateiname

Im folgenden Beispiel wird der Datei logfile.txt ein dynamischer Teil hinzugefügt:

mv logfile.txt logfile-$(date "+%Y%m%d").txt

Die vorhandene Datei wird umbenannt in “logfile” + Jahr + Monat + Tag + “.txt”. Wird am 01.02.2013 der Befehl zum umbenennen aufgerufen, wird die Datei in logfile-20130201.txt umbenannt. Dem Dateinamen können auch weiter Zeitmerkmale hinzugefügt werden. Dazu muss das date-Kommando um weitere Parameter wie in der folgenden Tabelle ergänzt werden:

Parameter Bedeutung Beispiel
%Y Jahr vierstellig 2013
%y Jahr zweistellig 08
%m Monat zweistellig 01
%b Monat ausgeschrieben JAN
%V Kalenderwoche 51
%u Wochentag (0-6) 3
%d Tag im Monat zweistellig 05
%e Tag im Monat einstellig 5
%H Stunde (24h-Format) 13
%M Minute der Stunde 45
%S Sekunde der Minute 34

Weitere Parameter können Sie der man-Page mittels Befehl “man date” entnehmen.

Weitere dynamische Komponenten über export

Sie können dem Dateinamen (bzw. auch dem Pfad) weitere dynamische Teile hinzufügen. Wenn Sie auf der Konsole den Befehl “export” absetzen, sehen Sie eine Liste aller Umgebungsvariaben, welche Sie wie das Datum mit einem vorangestellten Dollar-Zeichen ($) in den Dateinamen oder den Pfad hinzufügen können. Wenn Sie beispielsweise den Hostnamen in die Datei hinzufügen möchten, ergänzen Sie einfach $HOST:

mv logfile.txt logfile-$(date "+%Y%m%d")-$HOST.txt

Es wird nun die Datei beispielhaft in logfile-20130201-Dateiserver.txt umbenannt, wenn der Hostname des Computers Dateiserver ist.

Dynamischer Dateiname unter Linux
Markiert in:        

Ein Gedanke über “Dynamischer Dateiname unter Linux

  • 15. Juni 2015 bei 12:42
    Permalink

    wenn ich
    > Im folgenden Beispiel wird der Datei logfile.txt ein dynamischer Teil hinzugefügt:
    > mv logfile.txt logfile-$(date “+%Y%m%d”).txt
    funktioniert alles, wie es soll.
    logfile.txt wird auch über crontab erstellt.
    Aber die Date-Ergänzung funktioniert nicht im crontab.
    Irgendeine Idee?

Kommentare sind deaktiviert.