Khi tôi chạy xattr -l
trên các mục trong thư mục Tải xuống của mình, tôi nhận được một trường trông giống như thế này:
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
Đây là một số nhị phân. Khi tôi sử dụng HexFiend để tạo một tệp có các byte đó (vâng, tôi đã nhập chúng theo cách thủ công; nổ từ quá khứ như nhập mã trình biên dịch ra khỏi tạp chí vào Apple] [GS), sau đó lưu nó dưới dạng tệp .plist, tôi đã mở tệp trong TextWrangler và có xml chưa được biên dịch sau:
<?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>
Điều đó nói rằng, trong khi Apple dường như lưu trữ các ngày trong XML đã biên dịch, văn bản thuần túy dường như hoạt động.
Nói cách khác, nếu bạn có thể lấy ngày sửa đổi của tệp ở dạng chuỗi, bạn có thể chạy lệnh xattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
để thay đổi "ngày đã tải xuống", có vẻ như là trường thực sự được sắp xếp trên, không phải là Ngày thực tế được thêm vào.
Cuối cùng, bạn không gặp lỗi khi thêm trường (không sử dụng) kMDItemDateAdded
bởi vì, như tôi đã học trong bài viết này , xattr
sẽ vui vẻ đặt bất kỳ trường siêu dữ liệu nào bạn muốn, sử dụng hoặc không sử dụng.
Đó là cốt lõi của câu trả lời. Tôi sẽ viết AppleScript để lấy ngày sửa đổi cho mỗi tệp, kiểm tra xem có kMDItemDownloadedDate
được đặt không và nếu không, hãy đặt kMDItemDoadedDate thành ngày đã sửa đổi, nhưng tôi muốn lấy cốt lõi của câu trả lời được đăng.