Holen Sie sich das heutige Datum und verwenden Sie es im Dateinamen

10

Über die Befehlszeile möchte ich eine Protokolldatei mit dem heutigen Datum im Namen erstellen (zum Beispiel ist heute der 17.05.2011, also müsste der Dateiname sein log051711).

Ich weiß, wie man die Datei ( touch filename) erstellt, aber ich weiß nicht, wie ich das heutige Datum erhalte. Ich habe im Handbuch nachgesehen date, aber es scheint, dass ich die Ausgabe nicht wirklich formatieren kann.

Jede Hilfe wäre dankbar.

Louis B.
quelle

Antworten:

10

Sie können die Ausgabe mit dem Parameter '+ FORMAT' formatieren, z

touch "log$(date +'%m%d%y')"

In der Manpage finden Sie Informationen zu den Sequenzen, die Sie in FORMAT verwenden können.

Florian Diesch
quelle
Verdammt, 36 Sekunden zu langsam. ;-)
htorque
1
Ich habe gerade herausgefunden, dass ich, um dies in einem Cron-Job zu verwenden, den% -Zeichen entkommen musste, damit es lautete:touch "log$(date +'\%m\%d\%y')"
Louis B.
3

Ausführen des Befehls

echo "myfilename-"`date +"%d-%m-%Y"`

gibt dies als Ausgabe an:

myfilename-21-02-2014
Sreedhar GS
quelle
Eigentlich wird dies gedruckt myfilename-date +%d-%m-%Y.
Adaephon
Richtig .. MyFileName ist nur ein Präfix .. Wenn nötig, können wir es behalten, sonst .. Echo date +"%d-%m-%Y" das ist genug ... es wird nur das Datum 21-02-2014
Sreedhar GS
Ah, jetzt verstehe ich: Ich war verwirrt, weil das `in Ihrer Antwort nicht auftauchte. Dies liegt daran, dass sie von askubuntu verwendet werden, um Codeblöcke anzuzeigen. Sie sollten den Code markieren, indem Sie ihn entweder mit Backticks umgeben oder den Absatz mit dem Code mit 4 Leerzeichen einrücken. Für den Anfang sollten Sie wahrscheinlich das Menü über dem Editor verwenden und Ihren Beitrag in der Vorschau unter dem Textfeld überprüfen, bevor Sie ihn senden.
Adaephon
0

Eine der möglichen Lösungen:

date +log%y%m%d | xargs touch

schafft log111017

Sergey
quelle
0

Ich bin sicher, jemand anderes hat einen besseren Weg, dies zu tun, aber vorausgesetzt, Sie möchten Monat-Tag-Jahr, sollte dies funktionieren:

touch log`date +%m%d%y`  

und Sie können% m,% d,% Y neu anordnen, um die gewünschte Reihenfolge widerzuspiegeln. Auf der Manpage für Datum erfahren Sie mehr über zusätzliche Formate.

Dason
quelle
0

Python kann diesen Job auch erledigen. Das kleine Skript dafür wäre das Folgende:

#!/usr/bin/env python
import time,os

date=time.gmtime()
month = str(date.tm_mon).zfill(2)
day=str(date.tm_mday).zfill(2)
year=str(date.tm_year)[-2:]
fname = 'log' + month + day + year

with open(fname,'a') as f:
    os.utime(fname,None) 

Die Idee hier ist einfach: Wir verwenden time.gmtime(), um das aktuelle Datum abzurufen, bestimmte Felder aus der zurückgegebenen Struktur zu extrahieren, entsprechende Felder in Zeichenfolgen zu konvertieren und einen Dateinamen mit dem resultierenden Namen zu erstellen.

Testlauf:

$ ls
touch_log_file.py*
$ ./touch_log_file.py                                                                                             
$ ls
log010317  touch_log_file.py*

Zum Zeitpunkt des Schreibens ist es der 3. Januar 2017. Der resultierende Dateiname lautet also entsprechend Monat, Tag, Jahr - log010317

Sergiy Kolodyazhnyy
quelle