ฉันจะตั้งค่า mtime ของไฟล์ในรูปแบบของยุคได้อย่างไร?


11

ฉันรู้วิธีรับไฟล์ mtime ในรูปแบบ epoch:

stat --format=%Y <file>

แต่ฉันไม่สามารถหาวิธีกำหนด mtime ของไฟล์ในรูปแบบยุค หน้าสัมผัส (1) หน้าคนดูเหมือนจะยอมรับค่า "การประทับเวลา" เท่านั้น (รูปแบบคงที่มากกว่าหรือน้อยกว่าซึ่งใช้เดือน, วัน, ชั่วโมง, minues, ฯลฯ ) หรือ "สตริงรูปแบบวันที่มนุษย์อ่านได้ฟรีส่วนใหญ่"

มียูทิลิตี้อื่นที่ฉันควรจะตรวจสอบหรือไม่?

ขอบคุณ


1
กรุณาเสมอรวมถึงระบบปฏิบัติการของคุณ การแก้ปัญหามักขึ้นอยู่กับระบบปฏิบัติการที่ใช้ คุณใช้ Unix, Linux, BSD, OSX หรือเปล่า เวอร์ชันไหน
terdon

คำตอบ:



1

ด้วยperl:

$ perl -e 'utime (stat($_))[8], time(), $_ for @ARGV' file1 file2 ...

นี้จะเปลี่ยน mtime @ARGVของไฟล์ทั้งหมดใน (stat($_))[8]เป็นเวลาของไฟล์

utime สามารถรับรายการไฟล์ได้หากคุณไม่สนใจเรื่องการเปลี่ยน atime คุณสามารถลอง:

 $ perl -e '$t = time(); utime $t, $t, @ARGV' file1 file2 ...

บันทึก

utimeขึ้นอยู่กับ C runtime library และระบบไฟล์ที่ใช้ ดูรายละเอียดเพิ่มเติมในและperldoc -f utimeperldoc perlport


0

ด้วยtouchคำสั่งจาก coreutils GNU (เช่นที่ไม่ฝัง Linux และ Cygwin) ดูที่คู่มือการเต็มรูปแบบ (โดยปกติจะมีในท้องถิ่นในรูปแบบข้อมูล) สำหรับเอกสารของรูปแบบการป้อนวัน วันที่ของยุคจะถูกระบุด้วยคำนำหน้า@:

touch -d @1234567890 foo

สิ่งนี้ใช้ได้กับ BusyBox (อย่างน้อยในบางระบบก็อาจขึ้นอยู่กับตัวเลือกการรวบรวม)

ด้วย * BSD ฉันไม่คิดว่าคุณจะทำได้ด้วยตัวtouchเองเพียงอย่างเดียว แต่คุณสามารถโทรdateเพื่อจัดรูปแบบเวลายุคในรูปแบบที่touchยอมรับได้

touch -d "$(date -r 1234567890 +%Y%m%d%H%M.%S)" foo

POSIX ฉาวโฉ่วิธีที่จะจัดการกับวันที่ยุค คุณสามารถใช้ Perl

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