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

10

touch(1)может только изменить время модификации и доступа , но не имеет параметров для времени создания . Это не работает, по крайней мере, на Lion.

Так как же я могу изменить создание времени, называемый также birthtime в fstat(2)? Там нет соответствующего вызова utimes(2)и, кажется, нет никакого инструмента командной строки для этого.

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

Ингмар Хапп
источник
1
touch -t yyyymmddhhmm $fileдействительно, похоже, меняет дату создания, но только если она предшествует первоначальной дате создания.
Lri
Хороший вопрос, @Lri - это действительно имеет смысл, поскольку он обновляет mtime и atime, и файл не может быть доступен или изменен до его создания. Но это не позволяет мне установить более новое время создания.
Ингмар Хапп
Вы имеете в виду изменение его через командную строку или просто не обязательно с помощью CLI?
daviesgeek
Честно говоря, я надеюсь, что вы не можете изменить это, так как это наверняка победит всю точку поля ?! Также я подозреваю, что некоторые проблемы заключаются в том, что время рождения / создания не является стандартной функцией файловой системы; Я думаю, что 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 .

LRI
источник
Строго говоря «время рождения» ( 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
Вам все равно нужно будет удалить оригинал. Ингмар уже освещал это.
Бегемот
Упс, должен был прочитать лучше. Но нет, лучшего пути нет ...
Шон Фрейтаг,