Як змінити дату / час створення (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.