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.

Louis B.
źródło

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.

Florian Diesch
źródło
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
Sreedhar GS
źródło
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

Siergiej
źródło
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.

Dason
źródło
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

Sergiy Kolodyazhnyy
źródło