touch(英文全称:touch)命令是一个管理文件的工具,它的主要功能是修改文件的时间戳,包括文件的访问时间和修改时间,它不会修改文件的内容,那么当文件不存在时,它会创建一个空文件,再修改文件的时间戳。因此,也可以使用 touch 命令创建空文件。

touch 命令语法结构

touch 命令的基本语法结构如下:

touch [选项]... 文件...

语法结构很简单,无需过多解释。

但是文件名称可以使用 shell 通配符匹配文件,可以使用的通配符有:

  • *:匹配任意数量的任意字符,可以是 0 个字符
  • ?:匹配一个任意字符,必须匹配一个字符
  • []:匹配括号内字符集合中的任意一个字符,即:匹配其中的一个字符
  • [!][^]:匹配括号内字符集合中以外的任意一个字符
  • {}:生成多个元素的一个模式列表,以逗号分隔的每个元素,或者指定 首部..尾部 会作为一个序列处理

touch 命令使用示例

如下给出 touch 命令的详细使用示例,便于了解其主要功能。

创建新空文件

当 touch 命令指定的文件不存在时,它会创建文件:

touch newfile.txt

批量创建文件

touch file{1..5}.txt

使用模式列表,会生成多个文件file1.txt 到 file5.txt。

修改文件的时间戳

只指定文件,会把文件的时间戳修改为当前的系统时间:

touch existing.txt

指定时间戳

使用 -t 选项指定时间戳,时间戳的格式为 [[CC]YY]MMDDhhmm[.ss]

touch -t 202301012359.59 report.doc

时间戳格式解释:

  • [CC]YY:两位或四位的年
  • MM:两位的月
  • DD:两位的天
  • hh:两位的小时
  • mm:两位的分
  • ss:两位的秒

touch 命令选项详解

如下给出 touch 命令选项的详细解释说明:

选项 说明 参数示例
-a 只修改文件的访问时间,不修改文件的修改时间 touch -a file
-c, --no-create 当文件不存在时,不创建文件 touch -c may_exist.txt
-d, --date=STRING 使用指定格式的时间字符串 -d "2023-01-01 08:00"
-h, --no-dereference 影响符号链接本身 touch -h symlink
-m 只修改文件的修改时间,不修改文件的访问时间 touch -m file
-r, --reference=FILE 使用指定文件的时间戳来修改文件的时间戳 -r source.txt
-t STAMP 使用指定的时间戳来修改文件的时间戳 -t 202301011200.30
--time=WORD 指定时间类型:
access / atime(访问时间)
modify / mtime(修改时间)
--time=access
--help 显示帮助信息
--version 显示版本信息

-d / --date 选项可以使用的时间格式:

  • 使用相对时间:
  • "now":当前时间
  • "yesterday":昨天的这个时刻
  • "tomorrow":明天的这个时刻
  • "2 hours ago":2小时前
  • 使用绝对时间表:
  • "2023-01-01 08:30:15":精确到秒,可以从前往后截取一部分使用
  • "Jan 1 2023":月份使用英文缩写字母的形式
  • 组合形式:
  • "tomorrow 14:00":明天的 14:00

时间戳的类型

时间戳有三种类型:

时间戳类型 说明 查看命令 touch 控制
访问时间 (atime) 文件的访问时间 ls -lu -a / --time=atime
修改时间 (mtime) 文件的修改时间 ls -l -m / --time=mtime
变更时间 (ctime) 文件元数据(权限 / 所有者)变更时间 ls -lc 不可修改

结语

touch 命令用来修改文件的时间戳,标记文件有没有被修改,主要作用是标记文件有没有被更新,经常结合监视文件变化的命令使用。

在本文中介绍了 touch 命令的基本语法结构,使用示例和选项的详细解释说明,内容非常具体。touch 命令可在 Linux 各发行版和 FreeBSD 中使用。