จะเปลี่ยนการสร้าง (st_birthtime) วันที่ / เวลาของไฟล์ใน Lion ได้อย่างไร? [ซ้ำ]


10

touch(1)สามารถเปลี่ยนการแก้ไขและเวลาเข้าถึงเท่านั้น แต่ไม่มีตัวเลือกสำหรับเวลาการสร้าง สิ่งนี้ไม่ได้ผลอย่างน้อยก็ไม่ได้อยู่ที่ Lion

ดังนั้นฉันจะเปลี่ยนเวลาการสร้างได้อย่างไรซึ่งเรียกว่าเวลาเกิดในfstat(2)? ไม่มีการเรียกที่สอดคล้องกันutimes(2)และดูเหมือนจะไม่มีเครื่องมือบรรทัดคำสั่งสำหรับสิ่งนี้

ฉันรู้ว่าฉันสามารถคัดลอกไฟล์ไปยังไฟล์ใหม่ซึ่งได้รับเวลาปัจจุบันเป็นเวลาเกิด (และลบต้นฉบับ) แต่แน่นอนต้องมีวิธีที่ดีกว่า


1
touch -t yyyymmddhhmm $fileดูเหมือนจะเปลี่ยนวันที่สร้าง แต่ถ้าเป็นก่อนวันที่สร้างเดิม
Lri

จุดดี @Lri - ที่เหมาะสมจริง ๆ เนื่องจากการปรับปรุง mtime และ atime และไฟล์ไม่สามารถเข้าถึงหรือแก้ไขก่อนที่จะถูกสร้างขึ้น แต่มันไม่ให้ฉันตั้งเวลาสร้างใหม่
Ingmar Hupp

คุณหมายถึงการเปลี่ยนผ่านบรรทัดคำสั่งหรือโดยทั่วไปไม่จำเป็นต้องมี CLI หรือไม่
daviesgeek

ตรงไปตรงมาฉันหวังว่าคุณจะไม่สามารถเปลี่ยนแปลงได้แน่นอนว่ามันจะเอาชนะจุดทั้งหมดของสนาม! นอกจากนี้ฉันสงสัยว่าปัญหา hte บางอย่างคือเวลาเกิด / เวลาสร้างไม่ใช่คุณสมบัติระบบไฟล์มาตรฐาน ฉันคิดว่า hfs เพิ่มเข้าไปในแอททริบิวต์เสริมของพวกเขา - ดังนั้นหากไม่มีการอัปเดตยูทิลิตี้เพื่อรับรู้ว่าพวกเขาจะไม่สามารถทำอะไรได้มากกับมัน
แมกนีเซียม

คำตอบ:


6

touch -t เปลี่ยนเวลาการสร้างเช่นกันหากเวลาการแก้ไขเป้าหมายอยู่ก่อนเวลาการสร้างเดิม

SetFile สามารถกำหนดเวลาการสร้างที่จะอยู่ก่อนเวลาการแก้ไขหรือในอนาคต

-d date    Sets the creation date, where date is a string of the
           form: "mm/dd/[yy]yy [hh:mm:[:ss] [AM | PM]]" Notes:
           Enclose the string in quotation marks if it contains spa-
           ces. The date must be in the Unix epoch, that is, between
           1/1/1970 and 1/18/2038. If the year is provided as a two-
           digit year, it is assumed to be in the 21st century and
           must be from 00 (2000) through 38 (2038).

สิ่งนี้จะกำหนดเวลาการสร้างเป็นเวลาที่แก้ไข:

SetFile -d "$(GetFileInfo -m test.txt)" test.txt

SetFile และ GetFileInfo เป็นส่วนหนึ่งของแพคเกจเครื่องมือบรรทัดคำสั่งซึ่งสามารถดาวน์โหลดได้จากการตั้งค่า Xcode หรือdeveloper.apple.com/downloads


การพูดอย่างเคร่งครัด "วันเกิด" ( crtime) และctime เป็นสิ่งต่าง ๆ (ดูเวลาการสร้างไฟล์ใน ZFS
G. Cito

แน่นอนว่าการเข้าถึงและเวลาในการแก้ไขนั้นมักจะเหมือนกัน - แต่ด้วยเหตุผลที่ต่างกัน touchและstat คู่มือหน้ามีรายละเอียด ฉันสนใจที่จะทราบว่า OpenZFS สำหรับ OSX และ OSX "native" filesystems จัดการกับcrtimeเขตข้อมูลหรือสิ่งที่statรายงานสำหรับcrtimeOSX รุ่นต่างๆ
G. Cito

-1

ลอง:

cat filename > newfile
mv filename ~/.Trash/
mv newfile filename 

ที่ควรจะทำงาน


1
คุณจะต้องลบต้นฉบับ อิงมาร์ได้ครอบคลุมสิ่งนี้แล้ว
ฮิปโป

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