Pobierz dzisiejszą datę i użyj jej w nazwie pliku


10

Za pomocą wiersza polecenia chcę utworzyć plik dziennika z dzisiejszą datą w nazwie (na przykład dzisiaj jest 05/17/2011, więc nazwa pliku musiałaby być log051711).

Wiem, jak utworzyć plik ( touch filename), ale nie wiem, jak uzyskać dzisiejszą datę. Poszukałem instrukcji date, ale wygląda na to, że nie mogę sformatować jej danych wyjściowych?

Każda pomoc będzie mile widziana.

Odpowiedzi:


10

Możesz sformatować dane wyjściowe za pomocą parametru „+ FORMAT”, np

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

Sprawdź na stronie podręcznika, jakich sekwencji możesz użyć w FORMACIE.


Cholera, 36 sekund za wolno. ;-)
htorque

1
Ja po prostu zorientowali się, że do tego użyć w crona musiałem uciec% -signs tak, że czytać:touch "log$(date +'\%m\%d\%y')"
Louis B.

3

Uruchamianie polecenia

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

daje to jako wynik:

myfilename-21-02-2014

Właściwie to zostanie wydrukowane myfilename-date +%d-%m-%Y.
Adaephon

Prawda .. MyFileName to tylko przedrostek .. W razie potrzeby możemy go zachować, w przeciwnym razie ... echo date +"%d-%m-%Y" to wystarczy ... wydrukuje tylko datę 21-02-2014
Sreedhar GS

Ach, teraz widzę: pomyliłem się, ponieważ „nie pojawił się w twojej odpowiedzi. Jest tak, ponieważ są one używane przez askubuntu do wskazania bloków kodu. Powinieneś oznaczyć kod, otaczając go backtiksem lub wcinając akapit kodem z 4 spacjami. Na początek powinieneś prawdopodobnie użyć do tego menu nad edytorem i sprawdzić swój post w podglądzie poniżej pola tekstowego przed przesłaniem.
Adaephon

0

Jedna z możliwych dusz:

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

tworzy log111017


0

Jestem pewien, że ktoś inny ma lepszy sposób na zrobienie tego, ale zakładając, że chcesz mieć miesiąc-rok-rok, powinno to działać:

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

i możesz zmienić kolejność% m,% d,% Y, aby odzwierciedlić pożądaną kolejność. Strona podręcznika dla daty mówi więcej o dodatkowych formatach.


0

Python może również wykonywać tę pracę. Mały skrypt do tego byłby następujący:

#!/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) 

Pomysł tutaj jest prosty: używamy, time.gmtime()aby uzyskać bieżącą datę, wyodrębnić określone pola ze zwróconej struktury, przekonwertować odpowiednie pola na ciągi i utworzyć nazwę pliku z wynikową nazwą.

Testowe uruchomienie:

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

W chwili pisania tego tekstu jest 3 stycznia 2017 r. Tak więc wynikowa nazwa pliku to odpowiednio miesiąc, dzień, rok - log010317

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.