Come modificare la data / ora di creazione (st_birthtime) di un file in Lion? [duplicare]


10

touch(1)può solo modificare i tempi di modifica e accesso , ma non ha opzioni per i tempi di creazione . Questo non funziona, almeno non su Lion.

Quindi, come posso cambiare l' ora di creazione , indicata anche come ora di nascita in fstat(2)? Non c'è una chiamata corrispondente utimes(2)e non sembra esserci alcun strumento da riga di comando per questo.

So di poter copiare il file in un nuovo file, che quindi ottiene l'ora corrente come ora di nascita (e quindi elimina l'originale), ma sicuramente ci deve essere un modo migliore?


1
touch -t yyyymmddhhmm $filesembra cambiare la data di creazione, ma solo se è precedente alla data di creazione originale.
Lri,

Buon punto, @Lri - questo ha davvero senso, dal momento che aggiorna mtime e atime e non è stato possibile accedere o modificare un file prima che fosse creato. Ma non mi consente di impostare un tempo di creazione più recente.
Ingmar Hupp,

Ti riferisci a cambiarlo tramite la riga di comando, o semplicemente in generale, non necessariamente con la CLI?
daviesgeek,

Francamente spero che tu non possa cambiarlo, dato che sicuramente sconfiggerebbe l'intero punto del campo ?! Inoltre, ho il sospetto che alcuni dei suoi problemi siano che il tempo di nascita / tempo di creazione non è una funzionalità standard del filesystem; hfs lo ha aggiunto nei loro attributi estesi, penso - quindi a meno che le utility non siano state aggiornate per riconoscerlo, non saranno in grado di fare molto con esso.
Cesio

Risposte:


6

touch -t cambia anche l'ora di creazione se l'ora di modifica della destinazione è precedente all'ora di creazione originale.

SetFile può impostare l'ora di creazione in modo che sia precedente all'ora di modifica o in futuro.

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

Ciò imposterebbe il tempo di creazione sul tempo di modifica:

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

SetFile e GetFileInfo fanno parte del pacchetto di strumenti della riga di comando, che può essere scaricato dalle preferenze di Xcode o developer.apple.com/downloads .


A rigor di termini "tempo di nascita" ( crtime) e ctime sono cose diverse (vedi Tempi di creazione del file in ZFS
G. Cito

Naturalmente i tempi di accesso e modifica sono spesso gli stessi, ma per motivi diversi. Le pagine del manuale touche stathanno i dettagli. Sarei interessato a sapere come OpenZFS per OSX e i file system "nativi" di OSX gestiscono il crtimecampo o cosa statriporta per le crtimevarie versioni di OSX.
G. Cito,

-1

Provare:

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

Dovrebbe funzionare.


1
Dovrai comunque eliminare l'originale. Ingmar l'aveva già trattato.
Ippopotamo il

Ehi, avrei dovuto leggere meglio. Ma no, non esiste un modo migliore ...
Sean Freitag,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.