如何在 Linux 中编辑文件而不更改其时间戳

您可能知道,文件的“访问时间”和“修改时间”时间戳会在文件被编辑或修改后更改为当前时间。 有时,即使在编辑或修改文件之后,您也可能出于任何原因想要保留旧时间戳。 这个简短的指南解释了如何在 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: -
在 Linux 中编辑文件而不更改其时间戳

看? 两个文件’ 时间时间 时间戳是一样的!

现在在主文件中进行更改,即 ostechnix.txt. 如您所料,主文件的时间戳会发生变化。

最后,复制新文件的时间戳即 ostechnix.timestamp 到主文件:

$ touch -r ostechnix.timestamp ostechnix.txt

现在,主文件在编辑/修改之前具有旧的时间戳。

请注意,我们无法保留更改时间 (ctime) 时间戳。 它将始终更新到当前时间。

TL; 博士

使用与主文件相同的时间戳创建一个新文件 touch 命令,在主文件中进行更改并将新文件的时间戳设置为主文件 -r 选项。

希望这可以帮助。

atimeLinuxLinux 基础Linux 命令Linux 文件时间戳mtimeTimestamps