timestamp, modification time, and created time of a file
There are 3 kind of "timestamps":
- Access - the last time the file was read
- Modify - the last time the file was modified (content has been modified)
- Change - the last time meta data of the file was changed (e.g. permissions)
To display this information, you can use stat
which is part of the coreutils.
stat
will show you also some more information like the device, inodes, links, etc.
Remember that this sort of information depends highly on the filesystem and mount options. For example if you mount a partition with the noatime
option, no access information will be written.
A utility to change the timestamps would be touch
.
There are some arguments to decide which timestamp to change (e.g. -a for access time, -m for modification time) and to influence the parsing of a new given timestamp.
See man touch
for more details.
touch
can become handy in combination with cp -u
("copy only when the SOURCE file is newer than the destination file or when the destination file is missing") or for the creation of empty marker files.
The answer of echox is valid but I want to add information regarding file creation time.
File System Support
Some file systems support an additional entry in the inode regarding the creation time (or birth time). I know that ext4 supports this feature and also JFS and BTRFS.
However most tools and API have not yet been updated to read this extra information. So even-though it could be there, it's not accessible.
For instance on Ubuntu 12.04 LTS I get the following for a file I created today:
$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
Birth: -
$ sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
ctime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
atime: 0x4fcdee98:42b417dc -- Tue Jun 5 13:33:44 2012
mtime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun 5 13:32:22 2012
[...]
You can see that the newer stat function has a birth field, though the output seems incorrect. And via debugfs we can get the information (crtime as I'm on ext4 file system).
statx support
There is now since Kernel 4.11 a new statx system call, on top of better support of Y2038 or network file systems, it also brings a few extra features like the btime
or birth time (creation time) access. Support for ext4 should be in the same kernel release 4.11.
There have been patches to add support to this new syscall in later Kernel releases: e.g. BTRFS and F2FS in Kernel 4.13, SMB3 in 4.14, GFS2 in 4.15, NFS in 4.16, etc.
The up coming glibc will provide a function call to query this interface (see Phoronix news about glibc statx support). So we can expect support for this feature in user space pretty soon.