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


Строго говоря «время рождения» ( 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.