Dapatkan tanggal hari ini dan gunakan dalam nama file

10

Dengan menggunakan command-line, saya ingin membuat file log dengan tanggal hari ini di namanya (misalnya, hari ini 17/5/2011, jadi nama filenya harus log051711).

Saya tahu cara membuat file ( touch filename), tetapi saya tidak tahu cara mendapatkan tanggal hari ini. Saya telah melihat manualnya date, tetapi sepertinya saya tidak bisa memformat outputnya?

Bantuan apa pun akan dihargai.

Louis B.
sumber

Jawaban:

10

Anda dapat memformat output menggunakan parameter '+ FORMAT', mis

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

Lihat halaman manual untuk urutan apa yang dapat Anda gunakan di FORMAT.

Florian Diesch
sumber
Sial, 36 detik terlalu lambat. ;-)
htorque
1
Saya baru tahu bahwa untuk menggunakan ini dalam pekerjaan cron, saya harus melarikan diri dari% -signs, sehingga terbaca:touch "log$(date +'\%m\%d\%y')"
Louis B.
3

Menjalankan perintah

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

memberikan ini sebagai output:

myfilename-21-02-2014
Sreedhar GS
sumber
Sebenarnya ini akan dicetak myfilename-date +%d-%m-%Y.
Adaephon
Benar .. MyFileName hanyalah awalan .. Jika diperlukan kita bisa menyimpannya, kalau tidak .. gema date +"%d-%m-%Y" ini sudah cukup ... hanya akan mencetak tanggal 21-02-2014
Sreedhar GS
Ah, sekarang saya mengerti: Saya bingung karena `tidak muncul dalam jawaban Anda. Ini karena mereka digunakan oleh askubuntu untuk mengindikasikan blok kode. Anda harus menandai kode dengan mengelilinginya dengan backticks atau dengan indentasi paragraf dengan kode dengan 4 spasi. Sebagai permulaan, Anda mungkin harus menggunakan menu di atas editor untuk itu dan memeriksa posting Anda di pratinjau di bawah kotak teks sebelum mengirimkan.
Adaephon
0

Salah satu kemungkinan soulions:

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

menciptakan log111017

Sergey
sumber
0

Saya yakin ada orang lain yang memiliki cara yang lebih baik untuk melakukan ini tetapi dengan asumsi Anda ingin bulan-hari-tahun ini bisa berfungsi:

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

dan Anda dapat menyusun ulang% m,% d,% Y untuk mencerminkan pemesanan yang Anda inginkan. Halaman manual untuk tanggal memberi tahu Anda lebih banyak tentang format tambahan.

Alasan
sumber
0

Python dapat melakukan pekerjaan ini juga. Script kecil untuk itu adalah sebagai berikut:

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

Idenya di sini sederhana: kita gunakan time.gmtime()untuk mendapatkan tanggal saat ini, mengekstrak bidang tertentu dari struktur yang dikembalikan, mengonversi bidang yang sesuai menjadi string, dan membuat nama file dengan nama yang dihasilkan.

Uji coba:

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

Pada saat penulisan ini adalah 3 Januari 2017. Dengan demikian nama file yang dihasilkan tepat bulan, hari, tahun - log010317

Sergiy Kolodyazhnyy
sumber