假设你有file
一个给定的文件mtime
。如果我创建一个通过符号链接sym
指向的符号链接,它本身会得到一个与创建时间相对应的-stamp,这与of 不同。file
ln -s
mtime
symlink
mtime
file
那么有没有办法创建一个符号链接,使其与mtime
它指向的文件相同?
这个问题的背景是这个脚本,其中创建了一个指向云镜像的n个最新文件的链接目录。现在,例如,如果我ls -lt
在此current
目录中执行此操作,它不会显示创建实际文件的日期,而是显示创建符号链接的日期。但我想查看文件创建日期。
编辑 在我原来的帖子中,我错误地要求 ctime(我在上面更改了它),但是问题应该是关于 mtime。感谢@ilkkachu 指出这一点。
你的意思是ctime还是mtime?Ctime 是文件元数据(inode 内容)或文件内容的最新更改时间。它会在写入时更新,但也会在权限发生更改时更新。mtime 是最近一次写入文件数据的时间,可以用 改变
touch
,而 ctime 通常不能。因为它可以为副本重置,所以 mtime 通常是更有用的一个。它也是
ls -lt
显示的(您需要添加-c
以显示 ctime)。您可以
touch -h
用来更改符号链接的 mtime:但这仍然需要手动完成,如果目标文件更改,它不会自动更新。但是您可以使用
ls -L
它来打印目标文件的详细信息,而不是链接本身:当然,它也隐藏了它是一个链接开始的事实。
如果您需要混合输出,并显示链接名称和目标以及指向文件的日期和所有权,您可能需要使用 Perl 之类的东西来创建该列表。
没有一个
ln
,touch
或者系统调用utimensat
可以ctime
改变,只有mtime
&atime
。如果这是您真正需要做的事情,那么您唯一的选择就是推出您自己的系统调用/内核模块/用户空间 exe。
不,符号链接本身并没有任何有用的元数据(时间戳、所有者、权限)。
但是,您可以使用
-H
withls
取消引用(即跟随)符号链接。或-L
与stat
.或者,您可以
readlink -e
在我对链接问题的回答中使用 as 来获取符号链接指向的任何内容的完整规范路径名。