Modifica della data di creazione di un file

60

Per favore, fammi sapere come posso cambiare la data di creazione di un file in Lion. Mi rendo conto che c'è il comando touch-t ma che non funziona in Lion. Un paio di persone hanno menzionato un altro modo, ma penso che abbiano scritto la soluzione in linguaggio "coder" piuttosto che in una lingua laica - qualcuno potrebbe essere in grado di rispondere in un modo che un laico può eseguire?

Molte grazie per il tuo aiuto.

    
posta user55502 21.08.2013 - 00:37
fonte

5 risposte

91

touch -t normalmente modifica solo la modifica e i tempi di accesso. Cambia solo il tempo di creazione se il tempo di destinazione è precedente all'orario 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 modifica sempre il tempo 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 della riga di comando che può essere scaricato da developer.apple.com/downloads o da Xcode's preferenze.

    
risposta data 21.08.2013 - 17:21
fonte
13

In Mac OS X ci sono quattro diversi timestamp associati a un file. Questi timestamp non sono sempre aggiornati indipendentemente l'uno dall'altro, ma si può avere un controllo individuale con un po 'di attenzione e con l'uso di touch , SetFile e chown (o chmod ). Per vedere questo, proviamo 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

La prima data elencata è l'ultimo tempo di accesso ( atime ), il secondo è l'ultimo tempo di modifica ( mtime ), il terzo è l'ultimo cambio di stato ( ctime ), il quarto è il tempo di creazione del file (nascita , Btime ), vedi man lstat .

Per modificare il tempo di accesso ( atime ) a un orario specificato, utilizzare:

# 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 il tempo di modifica ( mtime ) e di tempo della creazione del file ( Btime ) a un tempo specificato:

# 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 anche automaticamente l'ora dell'ultima modifica di stato ( ctime ) all'ora corrente del sistema!

Per modificare solo il tempo di creazione / nascita ( Btime ) in un dato momento, usa (come proposto 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 l'ora dell'ultima variazione di stato ( ctime ) per l'ora corrente del sistema, 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 all'inode del file e registra ciò come un momento dell'ultima modifica dello stato. Sfortunatamente, non è possibile specificare l'ora in modo esplicito qui a parte cambiando l'ora del computer ...

In sintesi, per poter cambiare i quattro timestamp in modo indipendente, si può usare (in questo ordine per gli ultimi 3):

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [imposta la data di sistema] chown username <file> [ripristina la normale data di sistema]

(Naturalmente, la reimpostazione della data di sistema potrebbe non essere un'operazione priva di rischi, sei stato avvisato.)

    
risposta data 18.05.2015 - 16:31
fonte
13

Il comando della riga di comando touch funziona in Lion, ma hai bisogno di un po 'di esperienza su come usarlo.

In primo luogo, è necessario inserirlo, non è un'utilità che funziona graficamente in una finestra. Il luogo in cui digiti è un'app chiamata Terminale . Puoi trovarlo nella cartella Utilità oppure utilizzare la ricerca Spotlight per trovarlo.

Una volta avviato, si ottiene una finestra della riga di comando in cui è possibile digitare i comandi. Solo perché stai scrivendo non significa che abbia qualcosa a che fare con la programmazione, ma per qualcuno che è nuovo ai comandi del sistema operativo "vecchio stile" può sembrare un po 'intimidatorio.

Quindi, il comando è chiamato touch , e dopo il comando puoi passare vari parametri, l'unico richiesto è il nome del file. Digitando quanto segue si imposta l'ultima data di modifica del file sull'ora corrente:

touch filename

Naturalmente, potrebbe essere necessario trovare prima il file, che potrebbe richiedere ulteriori comandi per raggiungerlo. il comando cd o Cambia directory aiuta qui:

cd ~/Desktop/files/PDFs
touch filename

Oppure, puoi semplicemente aggiungere il percorso completo al file come parte del comando:

touch ~/Desktop/files/PDFs/filename

L'uso più avanzato del comando touch consente di specificare l'orario che si desidera impostare, piuttosto che usare il tempo di esecuzione, impostare l'accesso invece dei tempi di modifica ecc. Questo è ciò che parametri come -t e altri lo fanno. Alcuni impostano il tempo per essere il tempo di un altro file, alcuni lo impostano per tornare indietro o in avanti di tempo di X importo, ( vedi qui per ulteriori 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 sono a disagio con le posizioni dei file nella riga di comando

Si noti che questo cambierà sia la data modificata che gli attributi creati per data solo se il file è stato creato dopo la 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 modificata.

How to change the date created attribute of a file?

  1. Open up the Terminal application (/Applications/Utilities/Terminal.app) or if you prefer use iTerm.

  2. Type this into Terminal (without hitting enter/return) inserting the date in the format of YYYYMMDDhhmm:

    touch -t 201212211111
    
  3. Open a Finder window and locate the file you wish to modify and drag and drop it into the Terminal window, it will then insert the file location using command line terminology. Here’s an example of what should be typed into the Terminal at this point:

    touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
    

    201212211111 in the example above represent “December 21, 2012 11:11 AM

    
risposta data 21.08.2013 - 15:53
fonte
7

Ecco alcuni suggerimenti qui, in particolare l'ultimo (da Lauri Ranta, ha risposto il 21 agosto alle 15:21). Perfekt!

Ora utilizzo un semplice flusso di lavoro di Automator per modificare in batch più file:

  1. Trova elementi selezionati del Finder
  2. Esegui Shell Script, "Passa l'input: come argomenti"

Lo script della shell è:

for f in "$@"
do
    SetFile -d "$(GetFileInfo -m "$f")" "$f" 
done

Funziona come un incantesimo.

    
risposta data 28.12.2013 - 23:31
fonte
0

Il modo più semplice che ho trovato è stato quello di 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.

    
risposta data 15.08.2015 - 19:07
fonte

Leggi altre domande sui tag