touch 命令允许我们更新现有文件和目录的时间戳以及创建新的空文件。
在本指南中,我们将通过实际示例和最常见命令选项的详细说明向您展示如何使用 touch 命令。
Linux 文件时间戳#
在讨论如何使用 touch 命令之前,我们首先回顾一下 Linux 中的文件时间戳。
Linux 中的文件具有三个时间戳:
- atime(访问时间)- 上次通过某些命令或应用程序访问/打开文件的时间,例如cat、vim 或grep
.
- mtime(修改时间)- 文件内容的最后一次修改时间。
- ctime(更改时间)- 文件属性或内容上次更改的时间。该属性包括文件权限、文件所有权或文件位置。
要显示包括时间戳在内的文件状态,请使用stat命令。
stat file_name
创建新文件需要父目录的写权限。否则,您将收到权限被拒绝的错误。
如何使用触摸命令#
在最简单的形式中,当不带任何选项使用时,如果指定为参数的文件名不存在,touch 将创建一个新文件。
如果文件已存在,触摸会将文件上次访问和修改时间更改为当前时间。
例如,如果文件file1
不存在以下命令将创建它,否则,它将更改其时间戳:
touch file1
要一次创建或修改多个文件,请将文件名指定为参数:
touch file1 file2 file3
如果您不希望 touch 命令创建新文件,请使用-c
(--no-create
) 选项。
例如,如果文件file1
存在以下命令将更改文件时间戳,否则,它将不执行任何操作:
touch -c file1
仅更改访问或修改时间#
默认情况下,如果不使用任何选项,触摸会将文件上次访问和修改时间更新为当前时间。通过使用-a
and -m
选项,您只能更改这些时间戳之一。
仅更改访问时间#
Use the -a
仅更改文件访问时间的选项:
touch -a file1
仅更改修改时间#
Use the -m
更改文件修改时间的选项:
touch -m file1
当更改修改时间时,更改时间也会更新。
设置特定时间戳#
touch 命令还允许我们更新或创建具有当前时间以外的特定时间的文件。
Use the -d
(--date=
) 选项指定日期字符串并使用它代替当前时间。
例如,要更改最后访问和修改时间file1
到 2018 年 6 月 1 日 11:02 您将使用以下命令:
touch -d '1 June 2018 11:02' file1
日期字符串需要用单引号引起来。
您还可以向 touch 命令提供部分日期时间字符串。仅提供日期,会自动将年份更改为当前年份:
touch -d '12 June' file1
Use the -t
选项来指定时间戳并使用它来代替当前时间。时间戳参数需要采用以下格式:
use [[CC]YY]MMDDhhmm[.ss]
例如,以下命令将设置最后访问和修改时间file1
至当年 6 月 1 日 11:02。
touch -t 06011102 file1
使用另一个文件的时间戳#
The -r
(--reference=
) 选项允许我们指定一个参考文件并使用它的时间戳而不是当前时间。
例如,以下命令将告诉 touch 使用以下时间file1
for file2
:
touch -r file1 file2
更改符号链接时间戳#
默认情况下,如果您在符号链接它将更改其引用文件的时间戳。
Use the -h
(--no-dereference
) 修改符号链接的时间戳。
例如,更改符号链接的时间戳symlink1
你会使用:
touch -h symlink1
结论#
现在您应该已经很好地了解了如何使用 Linux touch 命令。