เมื่อฉันเรียกใช้xattr -l
รายการในโฟลเดอร์ดาวน์โหลดของฉันฉันจะได้รับฟิลด์ที่มีลักษณะดังนี้:
com.apple.metadata:kMDItemDownloadedDate:
00000000 62 70 6C 69 73 74 30 30 A1 01 33 41 B4 83 4D BF |bplist00..3A..M.|
00000010 4C 4F E3 08 0A 00 00 00 00 00 00 01 01 00 00 00 |LO..............|
00000020 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 13 |.....|
00000035
นี่คือการวางแผนไบนารี เมื่อฉันใช้ HexFiend เพื่อสร้างไฟล์ที่มีไบต์เหล่านั้น (ใช่ฉันป้อนด้วยตนเองระเบิดจากอดีตเช่นการป้อนรหัสแอสเซมเบลอร์จากนิตยสารลงใน Apple ของฉัน] [GS) จากนั้นบันทึกเป็นไฟล์. plist ไฟล์ใน TextWrangler และมี xml ที่ไม่คอมไพล์ต่อไปนี้:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<date>2011-11-28T05:03:59Z</date>
</array>
</plist>
ที่กล่าวว่าในขณะที่ Apple ดูเหมือนจะเก็บวันที่ใน XML ที่คอมไพล์ข้อความธรรมดาดูเหมือนจะทำงานได้
กล่าวอีกนัยหนึ่งถ้าคุณได้รับวันที่แก้ไขของไฟล์ในรูปแบบสตริงคุณสามารถเรียกใช้คำสั่งxattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
เพื่อเปลี่ยน "วันที่ดาวน์โหลด" ซึ่งดูเหมือนจะเป็นเขตข้อมูลที่เรียงจริงไม่เพิ่มวันที่เกิดขึ้นจริง
ในที่สุดคุณได้ไม่มีข้อผิดพลาดเมื่อมีการเพิ่ม (ที่ไม่ได้ใช้) kMDItemDateAdded
ฟิลด์เพราะที่ผมได้เรียนรู้ในบทความนี้ , xattr
มีความสุขจะกำหนดสิ่งที่สนามเมตาดาต้าที่คุณต้องการใช้หรือไม่ได้ใช้
นั่นคือแก่นแท้ของคำตอบ ฉันจะพยายามเขียน AppleScript เพื่อรับวันที่แก้ไขสำหรับแต่ละไฟล์ตรวจสอบดูว่าkMDItemDownloadedDate
มีการตั้งค่าไว้หรือไม่และถ้าไม่ใช่ให้ตั้งค่า kMDItemDownloadedDate เป็นวันที่แก้ไข แต่ฉันต้องการได้รับคำตอบที่สำคัญ