如您所知,文件的“访问时间”和“修改时间”时间戳将在文件被编辑或修改后更改为当前时间。 有时,即使在编辑或修改文件之后,您也可能出于任何原因想要保留旧的时间戳。 这个简短的指南解释了如何在 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: -
如前所述,如果我们更改此文件的内容或元数据,时间戳也会更改。
现在创建一个新的空文件,用于 example 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
选项。
希望这可以帮助。