Jak zmienić datę / godzinę utworzenia (st_birthtime) pliku w Lionie? [duplikować]

10

touch(1)może zmieniać tylko czasy modyfikacji i dostępu , ale nie ma opcji czasu tworzenia . To nie działa, przynajmniej nie na Lwie.

Więc jak mam zmienić tworzenia czasu, nazywaną również birthtime w fstat(2)? Nie ma odpowiedniego połączenia utimes(2)i wydaje się, że nie ma do tego żadnego narzędzia wiersza poleceń.

Wiem, że mogę skopiować plik do nowego pliku, który następnie pobierze aktualny czas jako poród (a następnie usunie oryginał), ale na pewno musi być lepszy sposób?

Ingmar Hupp
źródło
1
touch -t yyyymmddhhmm $filewydaje się zmieniać datę utworzenia, ale tylko wtedy, gdy jest ona wcześniejsza niż pierwotna data utworzenia.
Lri
Dobra uwaga, @Lri - to ma sens, ponieważ aktualizuje mtime i atime, a plik nie był dostępny ani modyfikowany przed jego utworzeniem. Ale to nie pozwala mi ustawić nowszego czasu tworzenia.
Ingmar Hupp,
Czy masz na myśli zmianę tego za pomocą wiersza polecenia, czy po prostu niekoniecznie za pomocą interfejsu CLI?
daviesgeek
Szczerze mówiąc, mam nadzieję, że nie możesz tego zmienić, ponieważ z pewnością pokonałby cały punkt pola ?! Podejrzewam też, że niektóre z tych problemów polegają na tym, że poród / czas utworzenia nie jest standardową funkcją systemu plików; Myślę, że hfs dodał je w swoich rozszerzonych atrybutach - więc dopóki narzędzia nie zostaną zaktualizowane, aby to rozpoznać, nie będą w stanie wiele z tym zrobić.
Cesium

Odpowiedzi:

6

touch -t zmienia również czas tworzenia, jeśli docelowy czas modyfikacji jest wcześniejszy niż pierwotny czas utworzenia.

SetFile może ustawić czas utworzenia przed modyfikacją lub w przyszłości.

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

Ustawiłoby to czas utworzenia na czas modyfikacji:

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

SetFile i GetFileInfo są częścią pakietu narzędzi wiersza poleceń, który można pobrać z preferencji Xcode lub developer.apple.com/downloads .

Lri
źródło
Ściśle mówiąc „poród” ( crtime) i ctime to różne rzeczy (patrz Czasy tworzenia plików w ZFS
G. Cito,
Oczywiście czasy dostępu i modyfikacji są często takie same - ale z różnych powodów. touchI stat strony podręcznika mają szczegóły. Chciałbym wiedzieć, w jaki sposób OpenZFS dla OSX, a także „rodzime” systemy plików OSX obsługują crtimepole lub jakie statraporty dla crtimeróżnych wersji OSX.
G. Cito,
-1

Próbować:

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

To powinno działać.

Sean Freitag
źródło
1
Nadal będziesz musiał usunąć oryginał. Ingmar już to omówił.
Hippo
Ups, powinienem był lepiej czytać. Ale nie, nie ma lepszego sposobu ...
Sean Freitag,