Sto provando a impostare il tempo di creazione del filesystem per un file su Mac OS usando uno script ruby.Come posso impostare un tempo di creazione del file con ruby su Mac OS?
Su Mac OS X il 'ctime' rappresenta l'ultima volta della modifica di inode piuttosto che il tempo di creazione del file, quindi utilizzare File.utime() di Ruby per impostare ctime non sarà di aiuto.
Usando questo suggerimento [http://inessential.com/2008/12/18/file_creation_date_in_ruby_on_macs] posso recuperare il tempo la creazione di un file:
Time.parse(`mdls -name kMDItemContentCreationDate -raw "#{filename}"`)
... ma qualsiasi idea su come impostare utilizzando rubino?
- AGGIORNAMENTO -
Va bene, penso di poter effettivamente fare questo con File.utime
in Ruby.
Anche se il ctime è tecnicamente non utilizzato da Mac OS a tenere traccia del tempo di creazione del file, quando si utilizza utime
di aggiornare il ctime (insieme al mtime, che deve essere impostato allo stesso tempo) il file system sembra magicamente aggiornare anche il tempo di creazione come da kMDItemContentCreationDate
.
Quindi, per impostare il nome del file ad un ctime di 1 ott 2010 ed un mtime del 2 ottobre 2010:
File.utime(Time.strptime('011010', '%d%m%y'), Time.strptime('021010', '%d%m%y'), filename)
si potrebbe desiderare di inviare il tuo 'aggiornamento' soluzione come risposta, quindi questa domanda non ha bisogno di rimanere aperta (e 'senza risposta') – robustus
Capisci che questo non è portatile. Linux non supporta la memorizzazione di un tempo di creazione. Inoltre ctime non è il tempo di creazione, è il tempo di "modifica" in base alla directory, non per il file stesso. Questo potrebbe spiegarlo: http://stackoverflow.com/a/4009369/128421 –
L'impostazione delle ore di file usando 'utime' NON modifica il valore restituito usando' mdls -name kMDItemContentCreationDate -raw'. –