GNU/Linux >> Linux Esercitazione >  >> Linux

Quando è stato creato il file?

Questa domanda ha già risposte qui :Come trovare la data di creazione del file?

(7 risposte)
Chiuso 7 anni fa.

Come posso vedere quando è stato creato un file. Ho guardato la pagina man

ls -lc è per l'ultima modifica dello stato del file

ls -lu per il tempo di accesso

ls -l non è esattamente indicato quale ora, ultima modifica?

Ho provato questi, ma non mi danno il tempo di creare il file.

Risposta accettata:

Su OS/X o FreeBSD, è l'opzione -U. Linux ora memorizza anche l'ora di nascita/creazione sulla maggior parte dei suoi file system nativi, ma non esiste ancora alcuna API per recuperarla (modifica 2018 :dal kernel 4.11, ora c'è un statx() chiamata di sistema, e da glibc 2.28 un wrapper libc per esso e da coreutils 8.31, GNU stat può visualizzarlo e (modifica 2021 ) dalla 8.32 GNU ls può visualizzarlo con --time=birth ).

Sui filesystem ext4, puoi usare debugfs per ottenerlo però:

$ sudo debugfs /dev/some/fs
stat /some/file
[...]
crtime: 0x53208d7a:9045625c -- Wed Mar 12 16:38:18 2014
[...]

(dove /some/file è il percorso all'interno di quel filesystem)

Per i filesystem NTFS e supponendo che tu stia usando ntfs-3g per montarlo, vedi Come ottengo la data di creazione di un file su un volume logico NTFS?

Se hai un sistema Linux abbastanza recente, puoi usare xfs_io 's statx sottocomando per invocare il nuovo statx() chiamata di sistema e ottenere l'ora di nascita:

$ TZ=UTC0 xfs_io -c 'statx -v' /some/file
[...]
stat.btime = Thu Feb  7 17:11:20 2019
[...]

(qui usando l'ora UTC con TZ=UTC0 altrimenti la data sarebbe ambigua poiché l'offset UTC non viene emesso). Oppure con statx -r che ti dà la parte di nanosecondi e un tempo più facilmente analizzabile:

$ xfs_io -c 'statx -r' /some/file
[...]
stat.btime.tv_sec = 1549559480
stat.btime.tv_nsec = 964691587
[...]

Con GNU stat 8.31 o successivo su sistemi con glibc 2.28 o successivo e un kernel 4.11 o successivo:

$ stat /some/file | grep Birth:
 Birth: 2018-05-24 16:27:28.415875403 +0100
$ stat -c '%.9W %w' /some/file
1527175648.415875403 2018-05-24 16:27:28.415875403 +0100

Con GNU ls 8.32 o successivo su sistemi con glibc 2.28 o successivo e un kernel 4.11 o successivo:

$ ls -l --time=birth --full-time /some/file
-rw-r--r-- 1 stephane stephane 2333836 2018-05-24 16:27:28.415875403 +0100 /some/file

Tradizionalmente, Unix non memorizzava un'ora di creazione.

Nota che quel valore forse ha meno significato di quanto potresti pensare.

Il tempo di modifica riflette l'età dei dati in quel file, il tempo di accesso quando è stato effettuato l'ultimo accesso, il tempo di modifica dell'inode è molto utile per il backup del software, ad esempio, perché non sai nulla di quel file è cambiato da quel momento (tranne forse il suo percorso completo per il quale puoi dare un'occhiata al ctime dei suoi componenti di directory).

Correlati:problema con il file bundleconfig?

Il tempo di creazione è quando l'inode viene generato (benché un numero di collegamenti va da 0 a 1, quell'inode potrebbe essere stato allocato e rimosso in una vita precedente), non riflette l'età di alcun dato associato a quel file (i dati sono scritto dopo che il file è stato creato), non ci dice se un file da quel percorso esisteva in quel momento (il file che stiamo guardando può essere stato creato con un percorso diverso e collegato o spostato lì in un secondo momento).


Linux
  1. Codifica di un file zip?

  2. Quando i file eseguibili non lo sono?

  3. Come trovare quando lo Spfile è stato creato su un server Linux

  4. Cronologia di Bash:come visualizzare un timestamp (data/ora) quando ogni comando è stato eseguito

  5. come posso verificare in bash se un file è stato creato più di x tempo fa?

Come visualizzare l'ultimo accesso a un file in Ubuntu

Ottieni l'età del file specificato?

Ottieni il tempo di creazione/creazione del file??

Comprensione dei timestamp dei file Mac

backup in tempo reale se il file è cambiato?

Come eliminare i file .fuse_hidden*?