文件是什么时候创建的

Mar*_*rda 6 time files

如何查看文件何时创建。我看过手册页

ls -lc 用于文件状态的最后修改

ls -lu 访问时间

ls -l 没有确切指出是哪个时间,最后一次更改?

我尝试了这些,但它们没有给我创建文件的时间。

Sté*_*las 7

在 OS/X 或 FreeBSD 上,它是 -U 选项。Linux 现在还在其大多数本机文件系统上存储出生/创建时间,但还没有 API 来检索它(2018 年编辑:自内核 4.11 以来,现在有一个statx()系统调用,并且自 glibc 2.28 以来,它的 libc 包装器和从 coreutils 8.31 开始,GNUstat可以显示它,并且(2021 编辑),因为 8.32 GNUls可以显示它--time=birth)。

在 ext4 文件系统上,您可以使用 debugfs 来获取它:

$ sudo debugfs /dev/some/fs
stat /some/file
[...]
crtime: 0x53208d7a:9045625c -- Wed Mar 12 16:38:18 2014
[...]
Run Code Online (Sandbox Code Playgroud)

/some/file该文件系统中的路径在哪里)

对于 NTFS 文件系统,并假设您使用 ntfs-3g 挂载它,请参阅如何在 NTFS 逻辑卷上获取文件的创建日期?

如果你有足够新的 Linux 系统,你可以使用xfs_io'sstatx子命令来调用新的statx()系统调用并获取出生时间:

$ TZ=UTC0 xfs_io -c 'statx -v' /some/file
[...]
stat.btime = Thu Feb  7 17:11:20 2019
[...]
Run Code Online (Sandbox Code Playgroud)

(此处使用 UTC 时间,TZ=UTC0否则日期将不明确,因为不输出 UTC 偏移量)。或者使用statx -r它为您提供纳秒部分和更容易解析的时间:

$ xfs_io -c 'statx -r' /some/file
[...]
stat.btime.tv_sec = 1549559480
stat.btime.tv_nsec = 964691587
[...]
Run Code Online (Sandbox Code Playgroud)

另请参阅this other Q&A,了解statx()在您的内核足够新以支持它但当您的 libc 不是时调用的方法。

stat具有 glibc 2.28 或更高版本和内核 4.11 或更高版本的系统上使用 GNU 8.31 或更高版本:

$ 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
Run Code Online (Sandbox Code Playgroud)

ls具有 glibc 2.28 或更高版本和内核 4.11 或更高版本的系统上使用 GNU 8.32 或更高版本:

$ 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
Run Code Online (Sandbox Code Playgroud)

传统上,Unix 不存储创建时间。

请注意,该值的意义可能比您想象的要小。

修改时间反映了数据在该文件年龄,访问时间,当它被上次访问时,索引节点更改时间是例如备份软件非常有用的,因为你知道什么有关文件,因为时间已经改变了(除可能是它的完整路径,您可以查看其目录组件的 ctime)。

创建时间是当inode的产卵进入存在(当然有一个链接计数会从0到1,索引节点可能被分配在以前的生活中移除),它没有反映与该文件有关的任何数据时代(数据在文件创建后写入),它没有告诉我们那个路径的文件在那个时候是否存在(我们正在查看的文件可以使用不同的路径创建并链接或移动稍后)。


归档时间:

查看次数:

1502 次

最近记录:

4 年,11 月 前