如何在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; DR

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

希望这可以帮助。

atimeLinuxLinux基础Linux命令Linux文件timestampsmtimeTimestamps

Sidebar