Linux/Unix下的touch命令及示例

17 Mar 2025 | 5 分钟阅读

touch命令是一种创建空文件的方式(还有其他方法)。您可以使用touch命令更新每个文件的修改和访问时间。

它可在ReactOS、Unix、TSC的FLEX、类Unix操作系统、Microware OS-9 shell、AROS shell以及Digital Research/Novell DR DOS中使用。此外,该命令还可用于Microsoft Windows和FreeDOS。

  • 在其默认用法中,它相当于打开或创建文件并保存,而不会通知文件内容。
  • touch命令会忽略关闭、保存和打开文件。相反,它会更新目录或文件的相关日期。
  • 更新的修改或访问日期可能对备份实用程序或make命令行界面编程实用程序等一系列其他程序很重要。
  • 这些程序通常只关注在程序上次执行后被修改或创建的文件。
  • 此外,对于需要具有特定名称的文件才能成功运行但不需要文件包含任何特定内容的脚本或程序,touch命令可能有助于快速创建这些文件。

SUS(Single Unix Specification)定义touch命令应修改文件的修改时间、访问时间或两者。文件通过作为参数导入的路径名进行识别。此外,它表示如果识别出的文件不存在,则会创建该文件,并按指定设置修改和访问时间。如果未指定新的时间戳,touch命令将应用当前时间。

touch的简史

首先,touch实用程序出现在Version 7 AT&T UNIX中。如今,该命令可在包括各种Unix、DOS、类Unix系统、经典Mac OS和Microsoft Windows在内的多种不同操作系统上使用。由Paul Rubin、Randy Smith、David MacKenzie、Jim Kingdon和Arnold Robbins指定的GNU coreutils中的touch版本。

对于Microsoft Windows,该命令是Win32端口UnxUtils GNU类Unix实用程序集合中的一个独立软件包。FreeDOS版本根据GPL授权,并由Kris Heidenstrom集成。KolibriOS和DR DOS 6.0也添加了touch命令的实现。此外,touch命令已发布到IBM i OS。

touch在Ubuntu中的工作原理

touch是一个常见的Linux命令,用于创建空文件或修改文件时间戳(文件访问时间、最后日期或修改时间)。

时间戳

Linux文件包含三个时间戳:ctime、mtime和atime。这些时间戳解释如下:

  • atime:它包含有关何时使用head、grep、cat、vim、vi、nano、less等命令或工具读取文件内容的信息。atime时间戳会根据每次检查而修改和更新。
  • mtime:它显示文件内容的最后修改时间,例如其名称,但仅限于文件本身,而不包括其权限或所有者。
  • ctime:ctime也表示文件何时被更改,但如果修改了任何文件的权限、组或所有权访问,它也会被更新。我们可以编辑mtime和atime,但不能修改ctime。如果文件的权限被修改,或者文件被修改或读取,时间都会被更新。

语法

示例


TOUCH Command

如上所示,我们通过touch命令创建了两个名为'myfile1'和'myfile2'的文件。要创建多个文件,只需键入所有文件名,后跟一个touch命令,然后按Enter键。例如,如果您想同时创建'myfile1'和'myfile2',则命令将是:

touch 选项

选项函数
touch -a更改文件的访问和修改时间。
touch -m仅用于修改文件的修改时间。
touch -r根据另一文件更新一个文件的访问时间。
touch -t通过指定时间创建文件。
touch -c它不创建空文件。
-d=, --date=此选项用于使用日期字符串修改时间戳。
-h, --no-dereference修改符号链接的时间戳。
-f 无效果。该选项强制在旧版BSD中进行修改。
--version, -v显示程序版本。
--help显示帮助菜单。

Linux touch -a 命令

带'a'选项的touch命令用于更改文件的访问时间。默认情况下,它将采用您系统的当前时间。

语法

示例

要查看文件的访问和更改时间,您需要使用stat命令。

TOUCH -a Command

在上面的快照中,我们使用了'stat'命令(我们将在后面的教程中学习它)来检查目录(usr)的状态。所以不要对此感到困惑。现在您可以比较在执行'touch -a usr'命令之前和之后目录(usr)的访问时间。它采用了我们系统的默认访问时间。

Linux touch -m 命令

touch '-m' 选项将帮助您仅更改文件的修改时间。

语法

示例

TOUCH Command

请仔细观察上图,只有修改时间发生了变化。

Linux touch -r 选项

此命令将根据另一指定命令更新时间。使用此命令有两种方式。两者都工作相同。

在下面的示例中,我们想根据'demo.txt'更改'Demo.txt'的时间戳。首先,您可以这样写:

在使用touch命令之前,我们先查看两个文件的状态。

TOUCH Command

现在,在使用touch -r demo.txt Demo.txt命令后,Demo.txt的时间已根据demo.txt的时间进行了更改。

TOUCH Command

Linux touch -t 命令

使用此命令,您可以根据指定的访问时间来更改文件的访问时间。

它将使用指定时间而不是默认时间来修改时间。

时间格式为:

下面的截图显示了在touch命令之前文件 2.png 的状态。

TOUCH -t Command

这张截图显示文件 2.png 的时间已由我们指定的进行了修改。

TOUCH Command

Linux touch -c 命令

如果文件不存在,使用'c'选项和touch命令将不会创建空文件。

语法

示例


TOUCH Command

在上图中,我们想创建文件'movie',但使用了'c'选项,没有创建任何文件。

设置特定时间戳

我们可以使用touch命令为文件设置特定的时间戳。例如:

时间戳格式遵循特定模式:

其中,

  • CC:年份的前两位数字。
  • YY:年份的后两位数字。
  • MM:表示月份。
  • DD:表示日期。
  • hh:表示小时。
  • mm:表示分钟。
  • ss:表示秒。

使用日期字符串设置文件时间戳

我们可以使用带 -d 标志的 touch 命令来设置日期字符串的时间戳。其语法如下:

日期字符串是一种可变的日期格式,并支持多种人类可读的文本格式。以下是一些示例:

  • 日历日期,例如,2020年8月19日。
  • 一天中的时间,例如,晚上9:28或上午7:03。
  • 星期几,例如,星期二、星期三等。
  • 相对时间,例如,8年前、下周三、昨天等。

下一主题Linux rm