ใน Linux วิธีสร้างไฟล์ด้วยชื่อที่เป็นวันที่และเวลาปัจจุบัน


12

ฉันต้องการสร้างไฟล์ที่ชื่อจะเป็นวันที่และเวลาปัจจุบัน ฉันสามารถสร้างไฟล์ด้วยtouchคำสั่ง นอกจากนี้ฉันสามารถรับเวลาปัจจุบันด้วยdateคำสั่ง ดังนั้นฉันคิดว่าฉันต้องใช้คำสั่งที่สองกับคำสั่งแรก ฉันจะทำสิ่งนั้นได้อย่างไร

คำตอบ:


19

ใช้ค่าส่งคืนจากนิพจน์เชลล์เป็นอาร์กิวเมนต์เพื่อtouch:

touch $( date '+%Y-%m-%d_%H-%M-%S' )

ผล: 2012-03-11_14-33-53การมีแฟ้มชื่อเช่น

คำตอบนี้จะถือว่าคุณกำลังใช้bash(คำอธิบายในmanส่วนของหน้าการแทนที่คำสั่ง ) แต่เชลล์อื่น ๆ จะทำงานเหมือนกันหรือแตกต่างกันเล็กน้อยเท่านั้น


@MdGao และอธิบายไว้ในส่วนเดียวกันของหน้าคน ฉันชอบคำตอบที่ฉันให้ แต่นี่คือเหตุผลสองสามข้อ
Daniel Beck

ฉันลบความคิดเห็นของฉันเพราะ Markdown เสีย backticks ขอบคุณสำหรับลิงค์ @DanielBeck
Mengdi Gao

2
@gasan เพียงแค่ล้อมรอบด้วย"เครื่องหมายคำพูด คุณสามารถจินตนาการผลลัพธ์ของdateการเปลี่ยนส่วนหนึ่งของบรรทัดคำสั่งที่และtouch Sun Mar 11 14:48:31 CET 2012จะสร้างชื่อไฟล์Sun, Marฯลฯtouch "Sun Mar 11 14:48:31 CET 2012"ในมืออื่น ๆ ทำงานได้ดี (ยกเว้นผมไม่แน่ใจว่าวิธีการที่ดีทวิภาคจะทำงาน)
Daniel Beck

2
@gasan เครื่องหมายอัญประกาศเดี่ยวจะไม่ทำงานเนื่องจากไม่อนุญาตการทดแทนคำสั่งหรือการตีความอื่น ๆ ดูการอ้างอิงในคู่มือ Bash
slhck

2
@gasan ความแตกต่างคือเนื้อหาของคำพูดเดี่ยวไม่ได้รับการประเมิน ลองกับและecho "$HOME" นั่นเป็นเหตุผลที่ผมแนะนำการใช้งานของecho '$HOME' "
Daniel Beck

0

คุณสามารถใช้คำสั่งที่ง่ายขึ้น

touch $(date | tr ' ' '-')

ค่อนข้างหรูหราและพกพาได้น้อยกว่า แต่ก็ใช่ว่าจะใช้งานได้เช่นกัน
สกอตต์

ตกลงเนื่องจากฉันรู้ว่าคุณกำลังอ่านข้อความนี้ฉันจะอธิบายรายละเอียดเพิ่มเติมเล็กน้อย: คำตอบของ Daniel ให้ผลลัพธ์ในรูปแบบที่เป็นที่รู้จักและควบคุมทั้งหมด (1) เอาต์พุตจากdateปกติจะแสดงเวลาเป็น hh: mm: ss ผลลัพธ์คำตอบของคุณในชื่อไฟล์ที่มีเครื่องหมายโคลอน สิ่งนี้อาจทำให้เกิดข้อผิดพลาดในระบบไฟล์ที่ใช้ Windows (2) ผลผลิตดิบจากการร้องขออย่างง่ายdateขึ้นอยู่กับโลแคล; เช่นปรับแต่งเป็นภาษาท้องถิ่น ลองLANG=de_DE dateและLANG=fr_FR dateดูตัวอย่าง … (ต่อ)
สกอตต์

(ต่อ) ... (2a) ดังนั้นในเหตุการณ์ (ไม่แน่?) ที่คุณเคยเปลี่ยนภาษาในระบบของคุณหรือคุณให้สคริปต์ของคุณและการรวบรวมไฟล์ข้อมูลจากระบบของคุณกับใครบางคนที่มีการกำหนดค่าระบบสำหรับ ภาษาที่แตกต่างกันจะมีความไม่ตรงกัน (ฉันไม่แน่ใจว่านี่จะเป็นปัญหาจริง แต่มันจะเป็นปัญหาเกี่ยวกับสุนทรียศาสตร์) (2b) ฉันไม่รู้สถานที่ใด ๆ ที่ทำสิ่งนี้ แต่ในทางทฤษฎีอาจมีสถานที่ที่dateเขียนวันที่เป็น mm / dd / yy (หรือ dd / mm / yy) … (ต่อ)
สกอตต์

(ต่อ) หากคุณเคยพบกับระบบดังกล่าวคุณจะมีชื่อไฟล์ที่มีเครื่องหมายทับและจะทำให้เกิดข้อผิดพลาด (3) คำตอบของดาเนียลให้ผลที่คำสั่งพจนานุกรม (เช่นเรียงตามตัวอักษร) ตามที่จัดทำโดยlsหรือ*สอดคล้องกับลำดับเหตุการณ์ ด้วยคำตอบของคุณFriไฟล์ทั้งหมดจะอยู่ที่จุดเริ่มต้นของรายการเรียงตามพจนานุกรมAprและAugจะปรากฏก่อนเดือนอื่น ๆ
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.