📌  相关文章
📜  如何在 linux 中更改文件的日期 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:08:42.211000             🧑  作者: Mango

如何在 Linux 中更改文件的日期 - Shell-Bash

在 Linux 系统中,你可以使用 Shell-Bash 命令来更改文件的日期,包括文件的创建日期,修改日期和访问日期。 在本文中,我们将介绍如何在 Linux 中使用脚本和命令行来更改文件的日期。

更改文件的访问时间和修改时间

要更改文件的访问时间和修改时间,你可以使用 touch命令。这个命令是用来改变文件的时间戳的,包括访问时间和修改时间。

touch 命令的基本语法如下所示:

$ touch [options] file

其中 options 可以是以下选项之一:

  • -a:更新访问时间(access time)。
  • -m:更新修改时间(modification time)。
  • -t:指定自定义的时间戳。

例如,如果你想要将文件 file.txt 的修改时间更改为当前日期和时间,你可以按照以下方式运行 touch 命令:

$ touch file.txt

要更改文件的访问时间,可以使用以下命令:

$ touch -a file.txt

要同时更改访问时间和修改时间,请使用两个选项 -a-m

$ touch -am file.txt

要将文件的日期和时间更改为自定义时间,请使用 -t 选项:

$ touch -t 202101010101.01 file.txt

此命令将文件 file.txt 的时间戳更改为 2021 年 1 月 1 日 1:01.01。

更改文件的创建时间

在 Linux 中,文件的创建时间通常称为 inode 修改时间,是只读的时间戳。 没有标准的命令来更改文件的创建日期,但是你可以通过创建一个新文件并将其 inode 时间戳更改为所需日期,来“伪造”文件的创建时间。

以下是如何通过创建新文件并将其 inode 时间戳更改为所需日期来更改文件的创建时间:

  1. 创建一个空文件(例如 my_file.txt):

    $ touch my_file.txt
    
  2. 获得新文件的 inode 号码:

    $ ls -li my_file.txt
    1234567 -rw-r--r-- 1 user user 0 Jan 2 18:59 my_file.txt
    

    输出的第一列中的数字是该文件的 inode 号码。

  3. 更改新文件的 inode 时间戳:

    $ debugfs -w /dev/sda1
    debugfs:  set_inode_field <1234567> crtime <2021-01-01 01:01>
    debugfs:  quit
    

    注意:将上面的命令中的参数 <1234567> 替换为你在步骤 2 中获得的 inode 号码。

在上面的命令中,我们使用了 debugfs 工具来更改文件的 inode 时间戳。 这个工具通常在 Linux 系统上预先安装并默认安装在 /sbin 目录中。 更改 inode 时间戳可能需要 root 权限,具体取决于你的系统配置。

总结

本文介绍了如何使用 Shell-Bash 命令在 Linux 中更改文件的时间戳,包括访问时间、修改时间和 inode 创建时间。 如果你需要更改文件的时间戳,请像上面所述那样使用 touch 和 debugfs 工具,但请确保谨慎行事,因为这些命令可能会将文件损坏或含有安全风险。