Potresti farmi sapere come posso modificare la data di creazione di un file in Lion. Mi rendo conto che esiste il comando touch-t ma non funziona in Lion. Un paio di persone hanno menzionato un altro modo, ma penso che abbiano scritto la soluzione in un linguaggio “codificatore” piuttosto che in un linguaggio laico – qualcuno sarebbe in grado di rispondere in un modo che un laico può eseguire?
Molte grazie per il tuo aiuto.
Commenti
- Il ” coder ” la spiegazione su cui hanno scritto altre persone è probabilmente un riferimento a ” touch “. Tu ‘ è necessario aprire un terminale, accedere alla cartella in cui si trova il file, quindi utilizzare il comando touch per modificare la data di creazione ‘.
- FWIW Sei sulla riga giusta con ” touch-t “, ma cè uno spazio tra la he il -. ‘ s ” touch -t ”
Risposta
touch -t
normalmente cambia solo i tempi di modifica e di accesso. Modifica lora di creazione solo se lora di destinazione è precedente allora di creazione originale.
touch -t 199912312359 file.txt touch -t $(date -jf %FT%T 1999-12-31T23:59:59 +%Y%m%d%H%M%S) file.txt
SetFile -d
cambia sempre lora di creazione.
SetFile -d "12/31/1999 23:59:59" file.txt SetFile -d "$(GetFileInfo -m test.txt)" file.txt
SetFile fa parte del pacchetto di strumenti da riga di comando che può essere scaricato dallo sviluppatore .apple.com / downloads o dalle preferenze di Xcode.
Commenti
- -m per cambiare lora di modifica.
- In Yosemite, il tocco mi richiedeva di utilizzare il formato
+%Y%m%d%H%M.%S
(nota il punto tra minuti e secondi) - Ho scritto una funzione chiamata
CpCreationDate
infish
:SetFile -d (GetFileInfo -m $argv[1]) $argv[2]
Risposta
In Mac OS X sembrano esserci quattro diversi timestamp associati a un file. Questi timestamp non sono sempre aggiornati indipendentemente luno dallaltro, ma si può avere qualche individuo controllo ual con un po di attenzione e con luso di touch
, SetFile
e chown
(o chmod
). Per vederlo, sperimentiamo e creiamo un nuovo file dal prompt dei comandi #
:
# touch a.txt # stat a.txt 16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
Il la prima data elencata è lora dellultimo accesso (atime
), la seconda è lora dellultima modifica (mtime
), la terza è lultima modifica dello stato ( ctime
), il quarto è lora della creazione del file (nascita, Btime
), vedere man lstat
.
Per modificare lora di accesso (atime
) in base a unora specifica, utilizza:
# touch -a -t201412312359.59 a.txt # stat a.txt 16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
Per modificare lora di modifica (mtime
) e lora di creazione del file (Btime
) a unora specificata usa:
# touch -m -t201312312359.59 a.txt # stat a.txt 16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt
Apparentemente questo aggiorna automaticamente anche lora dellultima modifica di stato (ctime
) a lora di sistema corrente!
Per modificare solo lora di creazione / nascita (Btime
) a una data ora, usa (as pr scelto da altri sopra):
# SetFile -d "12/31/1999 23:59:59" a.txt # stat a.txt 16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
per modificare solo lora dellultimo cambio di stato (ctime
) al utilizzo dellora di sistema corrente, ad esempio:
# chown username a.txt # stat a.txt 16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
dove username
è il proprietario del file (come riportato da stat
o ls -l
). Questo non cambia la proprietà del file, ma accede allinode del file e lo registra come lora dellultima modifica di stato. Sfortunatamente, non è possibile specificare lora esplicitamente qui se non cambiando lora del computer …
In sintesi, per poter cambiare i quattro timestamp indipendentemente, si può usare (in questo ordine per gli ultimi 3):
-
touch -a -tCCYYMMDDHH.SS <file>
-
touch -m -tCCYYMMDDHH.SS <file>
-
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
- [set system date]
chown username <file>
[ripristina la normale data di sistema]
(Ovviamente, reimpostare la data di sistema potrebbe non essere unoperazione priva di rischi, sei stato avvertito.)
Commenti
- +1 Grazie per questa risposta super dettagliata. Questo ha risolto tutti i miei problemi.
- A volte mi ritrovo con foto con date errate perché la mia GoPro si ripristina da sola. Trasferimento queste foto sul mio Mac e correggo la data secondo queste istruzioni, ma quando trasferisco queste foto sul mio iPhone, la data è ancora sbagliata. Lunico modo che ho ‘ trovato per risolvere il problema è con un editor EXIF di iOS. Cè ancora un altro attributo di data nascosto da qualche parte?
- @Bowen: le date a cui fai riferimento in una foto fanno parte dei dati del formato del file della foto stesso. La data di creazione, la data di modifica ecc. Dei file di cui sopra sono quelle gestite dal file system del tuo sistema operativo, vengono mantenute e aggiornate separatamente rispetto ai dati contenuti nel file.
Risposta
Il comando della riga di comando touch
funziona in Lion, ma hai bisogno di un po di background su come usalo.
Innanzitutto, devi digitarlo, non è unutilità che opera graficamente in una finestra. Il luogo in cui lo digiti è unapp chiamata Terminale . Puoi trovarlo nella cartella Utilità o utilizzare la ricerca Spotlight per trovarlo.
Una volta avviato, viene visualizzata una finestra della riga di comando in cui puoi digitare i comandi. Solo perché stai digitando non ” Non significa che abbia qualcosa a che fare con la codifica, ma a qualcuno che non conosce i comandi del sistema operativo “vecchio stile” può sembrare un po intimidatorio.
Quindi, il comando si chiama touch , e dopo il comando si possono passare vari parametri, lunico richiesto essendo il nome del file. Digitando quanto segue imposterà la data dellultima modifica del file sullora corrente:
touch filename
Naturalmente, potrebbe essere necessario trovare prima il file, il che potrebbe richiedono ulteriori comandi per arrivarci. il comando cd o Cambia directory aiuta qui:
cd ~/Desktop/files/PDFs touch filename
Oppure puoi semplicemente aggiungere il file completo percorso del file come parte del comando:
touch ~/Desktop/files/PDFs/filename
Un utilizzo più avanzato del comando touch consente di specificare lora che si desidera impostare, invece di utilizzare lora allesecuzione, impostare laccesso invece dei tempi di modifica ecc. Questo è ciò che fanno parametri come -t e altri. Alcuni impostano lora in modo che corrisponda allora di un altro file, altri la impostano per tornare indietro o avanti nel tempo di X quantità, ( vedi qui per maggiori dettagli) , ad esempio:
touch -d "1 May 2005 10:22" file8
Quanto segue è da questa pagina che è anche riferimento utile e un ottimo esempio con alcuni suggerimenti per coloro che non si sentono a proprio agio con le posizioni dei file sulla riga di comando
Nota che questo cambierà sia gli attributi della data di modifica che quelli della data di creazione solo se il tuo file è stato creato dopo il data inserita. Questo perché un file non può essere modificato prima che sia stato creato. Se creato prima della data impostata, verrà modificata solo la data di modifica.
Come modificare lattributo della data di creazione di un file?
Apri lapplicazione Terminale (
/Applications/Utilities/Terminal.app
) o se preferisci usa iTerm.Digita questo nel Terminale (senza premere invio / ritorno) inserendo la data nel formato
YYYYMMDDhhmm
:touch -t 201212211111
Apri una finestra del Finder e individua il file che desideri modificare e trascinalo nella finestra Terminale, quindi inserirà il percorso del file utilizzando la terminologia della riga di comando. Ecco un esempio di cosa dovrebbe essere digitato nel Terminale a questo punto:
touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
201212211111 nellesempio sopra rappresenta “21 dicembre 2012 11:11
Commenti
- Ma
touch
modifica la data di modifica, non la data di creazione del file. - Può fare entrambe le cose. Dipende dai parametri.
- Lutilizzo di
touch
con i parametri che hai fornito sopra ha cambiato le date di modifica ma non di creazione per il mio file di prova. - @Daniel Probabilmente hai ricevuto la tua risposta, ma per completezza
touch
does modifica la data di creazione a seconda degli argomenti. Se fornisci una data di modifica antecedente alla data di creazione del file ‘, la data di creazione cambierà automaticamente con il nuovo valore della data di modifica, poiché un file non può essere modificato prima di essere creato . - Lho appena provato su Sierra e il tocco non cambia decisamente la data
creation
. Sono riuscito a modificare le dateaccess
emodified
in una data ” nel passato “, ma non ha modificato la data di creazione. Controlla la pagina man per il tocco, non menziona la data di creazione. File system: Mac OS esteso (Journaled, Encrypted). Lutilizzo diSetFile -d "$(GetFileInfo -m test.txt)" file.txt
ha funzionato perfettamente.
Risposta
Grandi suggerimenti qui , in particolare lultimo (di Lauri Ranta, risposto il 21 agosto alle 15:21). Perfetto!
Ora utilizzo un semplice flusso di lavoro Automator per modificare in batch più file:
- Ottieni elementi del Finder selezionati
- Esegui script shell, “Passa input : as arguments “
Lo script di shell è:
for f in "$@" do SetFile -d "$(GetFileInfo -m "$f")" "$f" done
Funziona come un incantesimo.
Risposta
Il modo più semplice che ho trovato è stato creare una nuova cartella, copiare tutte le sottocartelle della cartella in grigio nella nuova cartella e voilà, la nuova cartella non è disattivata. Puoi anche farlo nel Finder.