Linux Touch 命令

・5 分钟阅读

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

在本指南中,通过实例向你展示如何使用touch命令,并详细解释最常用的命令选项。

Linux文件时间戳

在使用touch命令之前,首先查看Linux中的文件时间戳。

Linux中的文件有三个时间戳:

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

要显示文件状态包括时间戳,请使用stat命令,

stat file_name

创建新文件需要对父目录有写权限,否则,你将收到权限被拒绝错误。

如何使用touch命令

最简单的形式,如果文件名参数不存在,touch创建一个新的文件。

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

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

touch file1

要一次创建或修改多个文件,请将文件名指定为参数:

touch file1 file2 file3

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

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

touch -c file1

只更改访问和修改时间

默认情况下,如果未使用任何选项,touch会将文件的上次访问和修改时间更新为当前时间。通过使用-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选项指定时间戳,并使用它代替当前时间,timestamp参数需要采用以下格式:


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

讨论
Syq2803 profile image