How to get file creation date/time in Bash/Debian?

后端 未结 12 1641
有刺的猬
有刺的猬 2020-11-28 23:00

I\'m using Bash on Debian GNU/Linux 6.0. Is it possible to get the file creation date/time? Not the modification date/time. ls -lh a.txt and stat -c %y a.

相关标签:
12条回答
  • 2020-11-28 23:47

    ls -i menus.xml

    94490 menus.xml Here the number 94490 represents inode

    Then do a:

    df -h

    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg-root   4.0G  3.4G  408M  90% /
    tmpfs                 1.9G     0  1.9G   0% /dev/shm
    /dev/sda1             124M   27M   92M  23% /boot
    /dev/mapper/vg-var    7.9G  1.1G  6.5G  15% /var
    

    To find the mounting point of the root "/" filesystem, because the file menus.xml is on '/' that is '/dev/mapper/vg-root'

    debugfs -R 'stat <94490>' /dev/mapper/vg-root

    The output may be like the one below:

    debugfs -R 'stat <94490>' /dev/mapper/vg-root

    debugfs 1.41.12 (17-May-2010)
    Inode: 94490   Type: regular    Mode:  0644   Flags: 0x0
    Generation: 2826123170    Version: 0x00000000
    User:     0   Group:     0   Size: 4441
    File ACL: 0    Directory ACL: 0
    Links: 1   Blockcount: 16
    Fragment:  Address: 0    Number: 0    Size: 0
    ctime: 0x5266e438 -- Wed Oct 23 09:46:48 2013
    atime: 0x5266e47b -- Wed Oct 23 09:47:55 2013
    mtime: 0x5266e438 -- Wed Oct 23 09:46:48 2013
    Size of extra inode fields: 4
    Extended attributes stored in inode body: 
      selinux = "unconfined_u:object_r:usr_t:s0\000" (31)
    BLOCKS:
    (0-1):375818-375819
    TOTAL: 2
    

    Where you can see the creation time:

    ctime: 0x5266e438 -- Wed Oct 23 09:46:48 2013
    
    0 讨论(0)
  • 2020-11-28 23:51

    Note that if you've got your filesystem mounted with noatime for performance reasons, then the atime will likely show the creation time. Given that noatime results in a massive performance boost (by removing a disk write for every time a file is read), it may be a sensible configuration option that also gives you the results you want.

    0 讨论(0)
  • 2020-11-28 23:54

    Creation date/time is normally not stored. So no, you can't.

    0 讨论(0)
  • 2020-11-28 23:55

    Unfortunately your quest won't be possible in general, as there are only 3 distinct time values stored for each of your files as defined by the POSIX standard (see Base Definitions section 4.8 File Times Update)

    Each file has three distinct associated timestamps: the time of last data access, the time of last data modification, and the time the file status last changed. These values are returned in the file characteristics structure struct stat, as described in <sys/stat.h>.

    EDIT: As mentioned in the comments below, depending on the filesystem used metadata may contain file creation date. Note however storage of information like that is non standard. Depending on it may lead to portability problems moving to another filesystem, in case the one actually used somehow stores it anyways.

    0 讨论(0)
  • 2020-11-28 23:55

    mikyra's answer is good.The fact just like what he said.

    [jason@rh5 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
    

    if you want to verify wich file was created first,you can structure your file name by appending system date when you create a series of files.

    0 讨论(0)
  • 2020-11-28 23:59

    even better:

    lsct () 
    { 
        debugfs -R 'stat <'`ls -i "$1" | (read a b;echo -n $a)`'>' `df "$1" | (read a; read a b; echo "$a")` 2> /dev/null | grep --color=auto crtime | ( read a b c d;
        echo $d )
    }
    

    lsct /etc

    Wed Jul 20 19:25:48 2016

    0 讨论(0)
提交回复
热议问题