Як змінити дату / час створення (st_birthtime) файлу в Lion? [дублікат]


10

touch(1)може змінювати лише час модифікації та доступу , але не має варіантів часу створення . Це не працює, принаймні не на Лева.

Так як же я можу змінити створення часу, званий також birthtime в fstat(2)? Немає відповідного дзвінка utimes(2)і, здається, не існує жодного інструмента командного рядка для цього.

Я знаю, що можу скопіювати файл у новий файл, який потім отримує поточний час як час народження (а потім видалити оригінал), але, безумовно, повинен бути кращий спосіб?


1
touch -t yyyymmddhhmm $fileздається, не змінює дату створення, але лише якщо вона до початкової дати створення.
Лрі

Хороший момент, @Lri - це насправді має сенс, оскільки це оновлення mtime та atime, і файл не можна було отримати або змінити до його створення. Але це не дозволяє мені встановити новіший час створення.
Інгмар Хупп

Ви маєте намір змінити його за допомогою командного рядка або просто загалом, не обов'язково з 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 .


Строго кажучи "timetime Birthday" ( crtime), і ctime це різні речі (див. Часи створення файлів у ZFS
G. Cito

Звичайно, час доступу та модифікації часто однаковий - але з різних причин. touchІ stat сторінки керівництва мають деталі. Мені буде цікаво дізнатись, як OpenZFS для OSX, а також "рідні" файлові системи OSX обробляють crtimeполе або які statзвіти для crtimeрізних версій OSX.
Г. Ціто

-1

Спробуйте:

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

Це має спрацювати.


1
Ще потрібно буде видалити оригінал. Інгмар уже це висвітлював.
Бегемот

Ну, треба б краще читати. Але ні, немає кращого способу ...
Шон Фрейтаг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.