myfreax

Linux touch 命令创建修改文件时间戳

touch 命令允许我们更新现有文件和目录的时间戳以及创建新的空文件

Linux touch 命令创建修改文件时间戳
Linux touch 命令创建修改文件时间戳

touch 命令允许我们更新现有文件和目录的时间戳以及创建新的空文件。创建新文件需要父目录的写权限。否则,您将收到权限被拒绝的错误。

在本教程中,我们将通过实际示例和最常用的命令选项的详细解释向您展示如何使用 touch 命令。

Linux 文件时间戳

在介绍如何使用 touch 命令之前,让我们先回顾一下 Linux 的文件时间戳。

Linux 的文件有三个时间戳:

  • atime(访问时间)- 上次文件被某些命令或应用程序访问/打开的时间,例如cat 、 vim 或 grep
  • mtime(修改时间)- 上次修改文件内容的时间。
  • ctime(更改时间)- 上次更改文件的属性或内容的时间。该属性包括文件权限、文件所有权或文件位置。

要查看文件的时间戳,请使用 stat 命令。

stat file_name

touch 命令

使用 touch 命令最简单的形式是不指定任何选项,如果指定的文件名参数指定的文件不存在,touch 将创建一个新文件。

如果文件已经存在,touch 会将文件的上次访问和修改时间修改为当前时间。

例如,如果文件 file1 不存在,则以下命令将创建它,否则,它将修改其时间戳:

touch file1

要一次创建或修改多个文件,请在参数中指定多个文件名并以空格进行分隔:

touch file1 file2 file3

如果您不希望 touch 命令创建新文件,请使用-c / --no-create 选项。

例如,如果文件 file1 存在,则以下命令将更改文件时间戳,否则,它不执行任何操作:

touch -c file1

仅更改访问或修改时间

默认情况下,如果未指定任何选项,touch 命令会将文件的上次访问时间和修改时间更新为当前时间。

如果只需要修改两个时间的其中一个,可以使用 touch 命令的 -a-m 选项,-a 仅修改访问时间,-m 选项仅更改文件修改时间。

仅修改访问时间

使用 -a 选项仅更改文件的访问时间:

touch -a file1

只改变修改时间

使用 -m 选项更改文件的修改时间,更改修改时间时,更改时间也会更新:

touch -m file1

设置指定的时间戳

touch 命令还允许我们使用当前时间之外的特定时间更新或创建文件。可以使用-d / --date= 选项指定日期字符串并使用它来代替当前时间。

例如,要将 file1 的最后访问时间和修改时间都更改为 2018 年 6 月 1 日 11:02,请运行命令:

touch -d '1 June 2018 11:02' file1

日期字符串需要用单引号括起来。

您还可以向 touch 命令提供部分日期时间字符串。例如仅提供日期,自动将年份修改为当前年份:

touch -d '12 June' file1

使用 -t 选项指定时间戳并使用它代替当前时间。时间戳参数需要采用以下格式:

use [[CC]YY]MMDDhhmm[.ss]

例如,下面的命令会将 file1 的最后访问和修改时间设置为当年的 6 月 1 日 11:02。

touch -t 06011102 file1

使用参考文件修改时间戳

-r / --reference= 选项允许我们指定一个参考文件并使用它的时间戳而不是当前时间修改文件时间戳。

例如,以下 touch 命令使用参考文件 file1 文件时间戳修改 file2 文件的时间戳。

touch -r file1 file2

修改符号链接时间戳

默认情况下,如果您在符号链接使用 touch 命令, 它将更改其引用文件的时间戳。但你可以使用 -h / --no-dereference 修改符号链接的时间戳。

例如,要修改符号链接 symlink1 的时间戳,请运行以下命令:

touch -h symlink1

结论

至此,您应该对如何使用 Linux touch 命令有了很好的了解。Linux touch 命令用于修改文件时间戳。但 touch 命令的最常见用法是创建文件。

内容导航