Làm cách nào để thay đổi ngày / giờ tạo (st_birthtime) của tệp trong Lion? [bản sao]


10

touch(1)chỉ có thể thay đổi thời gian sửa đổitruy cập , nhưng không có tùy chọn cho thời gian tạo . Điều này không hoạt động, ít nhất là không phải trên Lion.

Vậy làm thế nào để tôi thay đổi thời gian sáng tạo , còn được gọi là giờ sinh trong fstat(2)? Không có cuộc gọi tương ứng utimes(2)và dường như không có bất kỳ công cụ dòng lệnh nào cho việc này.

Tôi biết tôi có thể sao chép tệp vào một tệp mới, sau đó lấy thời gian hiện tại là giờ sinh (và sau đó xóa bản gốc), nhưng chắc chắn phải có cách nào tốt hơn?


1
touch -t yyyymmddhhmm $filedường như thay đổi ngày tạo, nhưng chỉ khi nó trước ngày tạo ban đầu.
Lri

Điểm hay, @Lri - điều đó thực sự có ý nghĩa, vì điều đó cập nhật thời gian và thời gian và một tệp không thể được truy cập hoặc sửa đổi trước khi nó được tạo. Nhưng nó không cho phép tôi thiết lập thời gian sáng tạo mới hơn.
Ingmar Hupp

Bạn đang đề cập đến việc thay đổi nó thông qua dòng lệnh, hay nói chung, không nhất thiết phải với CLI?
daviesgeek

Thành thật mà nói tôi hy vọng bạn không thể thay đổi nó, vì chắc chắn nó sẽ đánh bại toàn bộ quan điểm của lĩnh vực?! Ngoài ra tôi nghi ngờ một số vấn đề hte là thời gian sinh / tạo không phải là một tính năng hệ thống tập tin tiêu chuẩn; hfs đã thêm nó vào các thuộc tính mở rộng của họ, tôi nghĩ vậy - trừ khi các tiện ích được cập nhật để nhận ra điều đó, họ sẽ không thể làm được gì nhiều với nó.
Caesium

Câu trả lời:


6

touch -t cũng thay đổi thời gian tạo nếu thời gian sửa đổi mục tiêu trước thời gian tạo ban đầu.

SetFile có thể đặt thời gian tạo trước thời gian sửa đổi hoặc trong tương lai.

-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).

Điều này sẽ đặt thời gian tạo thành thời gian sửa đổi:

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

SetFile và GetFileInfo là một phần của gói công cụ dòng lệnh, có thể được tải xuống từ tùy chọn của Xcode hoặc developer.apple.com/doads .


Nói một cách nghiêm túc "giờ sinh" ( crtime) và ctime là những thứ khác nhau (xem Thời gian tạo tệp trong ZFS
G. Cito

Tất nhiên thời gian truy cập và sửa đổi thường giống nhau - nhưng vì những lý do khác nhau. Các trang touchstathướng dẫn sử dụng có các chi tiết. Tôi muốn biết OpenZFS cho OSX cũng như các hệ thống tệp "gốc" của OSX xử lý crtimetrường nào hoặc statbáo cáo nào cho crtimecác phiên bản OSX khác nhau.
G. Cito

-1

Thử:

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

Cần làm việc.


1
Bạn vẫn sẽ cần phải xóa bản gốc. Ingmar đã bao gồm điều này.
Hippo

Rất tiếc, nên đọc tốt hơn. Nhưng không, không có cách nào tốt hơn ...
Sean Freitag
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.