GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere la data/ora di creazione del file in Bash/Debian?

Sfortunatamente la tua ricerca non sarà possibile in generale, poiché ci sono solo 3 valori temporali distinti memorizzati per ciascuno dei tuoi file come definito dallo standard POSIX (vedi Definizioni di base sezione 4.8 Aggiornamento dei tempi dei file)

Ogni file ha tre distinti timestamp associati:l'ora dell'ultimo accesso ai dati, l'ora dell'ultima modifica dei dati e l'ora dell'ultima modifica dello stato del file. Questi valori vengono restituiti nella struttura delle caratteristiche del file struct stat , come descritto in .

EDIT:come menzionato nei commenti seguenti, a seconda del filesystem utilizzato i metadati possono contenere la data di creazione del file. Si noti tuttavia che l'archiviazione di informazioni del genere non è standard. A seconda di ciò, potrebbero verificarsi problemi di portabilità spostandosi su un altro filesystem, nel caso in cui quello effettivamente utilizzato lo memorizzi comunque.


la risposta di mikyra è buona. Il fatto è proprio come quello che ha detto.

[[email protected] test]$ stat test.txt
  File: `test.txt'
  Size: 0               Blocks: 8          IO Block: 4096   regular empty file
Device: 802h/2050d      Inode: 588720      Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/   jason)   Gid: (  500/   jason)
Access: 2013-03-14 01:58:12.000000000 -0700
Modify: 2013-03-14 01:58:12.000000000 -0700
Change: 2013-03-14 01:58:12.000000000 -0700

se vuoi verificare quale file è stato creato per primo, puoi strutturare il nome del tuo file aggiungendo la data di sistema quando crei una serie di file.


Nota che se hai il tuo filesystem montato con noatime per motivi di prestazioni, allora atime probabilmente mostrerà l'ora di creazione. Dato che noatime si traduce in un enorme aumento delle prestazioni (rimuovendo una scrittura su disco ogni volta che viene letto un file), potrebbe essere un'opzione di configurazione sensata che ti dia anche i risultati desiderati.


ls -i file #output is for me 68551981
debugfs -R 'stat <68551981>' /dev/sda3 # /dev/sda3 is the disk on which the file exists

#results - crtime value
[[email protected] ~]# debugfs -R 'stat <68551981>' /dev/sda3
debugfs 1.41.12 (17-May-2010)
Inode: 68551981   Type: regular    Mode:  0644   Flags: 0x80000
Generation: 769802755    Version: 0x00000000:00000001
User:     0   Group:     0   Size: 38973440
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 76128
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x526931d7:1697cce0 -- Thu Oct 24 16:42:31 2013
 atime: 0x52691f4d:7694eda4 -- Thu Oct 24 15:23:25 2013
 mtime: 0x526931d7:1697cce0 -- Thu Oct 24 16:42:31 2013
**crtime: 0x52691f4d:7694eda4 -- Thu Oct 24 15:23:25 2013**
Size of extra inode fields: 28
EXTENTS:
(0-511): 352633728-352634239, (512-1023): 352634368-352634879, (1024-2047): 288392192-288393215, (2048-4095): 355803136-355805183, (4096-6143): 357941248-357943295, (6144
-9514): 357961728-357965098

Linux
  1. Linux:come ottenere la data di creazione di un file su un volume logico Ntfs?

  2. Ottieni il tempo di creazione/creazione del file??

  3. Come analizzare un file CSV in Bash?

  4. Come ottenere la data e l'ora formattate in Python

  5. Come ottengo la directory assoluta di un file in bash?

Come leggere i file riga per riga in Bash

Come installare Vai su Debian 9

Come leggere un file riga per riga in Bash

Come reindirizzare stderr a stdout in Bash

Come ottenere la data e l'ora correnti in JavaScript

Come modificare data, ora e fuso orario in Debian 10