您可能知道,文件的“访问时间”和“修改时间”时间戳会在文件被编辑或修改后更改为当前时间。 有时,即使在编辑或修改文件之后,您也可能出于任何原因想要保留旧时间戳。 这个简短的指南解释了如何在 Linux 中编辑文件而不更改其时间戳。
如果您不太了解 Linux 文件时间戳,请参阅以下指南。
- 用例子解释 Linux 文件时间戳
在 Linux 中编辑文件而不更改其时间戳
可以使用更新文件的时间戳 touch
命令。 当我们手动在文件中添加内容或从中删除数据时,时间戳也会更新。 如果您想更改文件的内容而不更改其时间戳,则没有直接的方法可以做到。 但这是可能的!
我们可以使用其中之一 touch
命令选项 -r
(参考)在编辑或修改文件后保留文件时间戳。 这 -r
选项用于将一个文件的时间戳设置为另一个文件的时间戳值。
我有一个名为的文本文件 ostechnix.txt
. 让我们看看这个文件的时间戳 stat
命令:
$ stat ostechnix.txt File: ostechnix.txt Size: 38 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 4351679 Links: 1 Access: (0775/-rwxrwxr-x) Uid: ( 1000/ sk) Gid: ( 1000/ sk) Access: 2020-11-12 19:47:55.992788870 +0530 Modify: 2020-11-12 19:47:55.992788870 +0530 Change: 2020-11-12 19:47:55.992788870 +0530 Birth: -
如前所述,如果我们更改此文件的内容或元数据,时间戳也会更改。
现在创建一个新的空文件,例如 ostechnix.timestamp
,具有相同的时间戳 ostechnix.txt
文件使用 touch
命令:
$ touch -r ostechnix.txt ostechnix.timestamp
检查新文件的时间戳:
$ stat ostechnix.timestamp File: ostechnix.timestamp Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 4328645 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ sk) Gid: ( 1000/ sk) Access: 2020-11-12 19:47:55.992788870 +0530 Modify: 2020-11-12 19:47:55.992788870 +0530 Change: 2020-11-12 19:48:48.934235300 +0530 Birth: -
看? 两个文件’ 时间 和 时间 时间戳是一样的!
现在在主文件中进行更改,即 ostechnix.txt
. 如您所料,主文件的时间戳会发生变化。
最后,复制新文件的时间戳即 ostechnix.timestamp
到主文件:
$ touch -r ostechnix.timestamp ostechnix.txt
现在,主文件在编辑/修改之前具有旧的时间戳。
请注意,我们无法保留更改时间 (ctime) 时间戳。 它将始终更新到当前时间。
TL; 博士
使用与主文件相同的时间戳创建一个新文件 touch
命令,在主文件中进行更改并将新文件的时间戳设置为主文件 -r
选项。
希望这可以帮助。
atimeLinuxLinux 基础Linux 命令Linux 文件时间戳mtimeTimestamps