รับวันที่วันนี้และใช้ในชื่อไฟล์


10

ใช้บรรทัดคำสั่งฉันต้องการสร้างไฟล์บันทึกที่มีวันที่วันนี้ในชื่อ (ตัวอย่างเช่นวันนี้คือ 05/17/2011 ดังนั้นชื่อไฟล์จะต้องเป็นlog051711)

ฉันรู้วิธีสร้างไฟล์ ( touch filename) แต่ไม่รู้วิธีรับวันที่วันนี้ ฉันดูคู่มือdateแล้ว แต่ดูเหมือนว่าฉันไม่สามารถจัดรูปแบบผลลัพธ์ได้จริงหรือ

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

คำตอบ:


10

คุณสามารถจัดรูปแบบผลลัพธ์โดยใช้พารามิเตอร์ '+ FORMAT' เช่น

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

ดู manpage สำหรับลำดับที่คุณสามารถใช้ใน FORMAT


ประณามช้าเกินไป 36 วินาที ;-)
htorque

1
ฉันเพิ่งค้นพบว่าการใช้สิ่งนี้ในงาน cron ฉันต้องหลบหนี -signs เพื่อที่มันจะอ่าน:touch "log$(date +'\%m\%d\%y')"
Louis B.

3

กำลังรันคำสั่ง

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

ให้สิ่งนี้เป็นผลลัพธ์:

myfilename-21-02-2014

ที่จริงแล้วสิ่งนี้จะพิมพ์ออกmyfilename-date +%d-%m-%Yมา
Adaephon

จริง .. MyFileName เป็นเพียงคำนำหน้า .. หากจำเป็นเราสามารถเก็บไว้ได้ .. echo date +"%d-%m-%Y" นี่ก็เพียงพอแล้ว ... มันจะพิมพ์เฉพาะวันที่ 21-02-2014
Sreedhar GS

อาตอนนี้ฉันเห็นแล้ว: ฉันสับสนเพราะ `ไม่ปรากฏในคำตอบของคุณ นี่เป็นเพราะ askubuntu ใช้เพื่อระบุรหัสบล็อก คุณควรทำเครื่องหมายโค้ดโดยล้อมรอบด้วย backticks หรือย่อหน้าย่อหน้าด้วยโค้ดที่มีช่องว่าง 4 ช่อง สำหรับผู้เริ่มต้นคุณอาจใช้เมนูด้านบนตัวแก้ไขสำหรับสิ่งนั้นและตรวจสอบโพสต์ของคุณในตัวอย่างด้านล่างกล่องข้อความก่อนที่จะส่ง
Adaephon


0

ฉันแน่ใจว่าคนอื่นมีวิธีที่ดีกว่าในการทำเช่นนี้ แต่สมมติว่าคุณต้องการให้เดือน - วัน - ปีนี้ใช้งานได้:

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

และคุณสามารถเรียงลำดับ% m,% d,% Y เพื่อสะท้อนการสั่งซื้อที่คุณต้องการ หน้า man สำหรับวันที่จะบอกคุณเพิ่มเติมเกี่ยวกับรูปแบบเพิ่มเติม


0

Python สามารถทำงานนี้ได้เช่นกัน สคริปต์ขนาดเล็กสำหรับสิ่งนั้นจะเป็นดังต่อไปนี้:

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

ความคิดที่นี่ง่าย: เราใช้time.gmtime()เพื่อรับวันที่ปัจจุบันแยกเขตข้อมูลที่เฉพาะเจาะจงจากโครงสร้างที่ส่งกลับมาแปลงเขตข้อมูลที่เหมาะสมกับสตริงและสร้างชื่อไฟล์ด้วยชื่อผลลัพธ์

ทดสอบการทำงาน:

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

ในขณะที่เขียนมันคือ 3 มกราคม 2017 ดังนั้นชื่อไฟล์ที่ได้คือเดือนวันปี log010317

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.