touch 是一个在 Unix 和类 Unix 系统(如 macOS、Linux)中非常基础且常用的命令,它的核心功能是更新文件的时间戳,但根据文件是否存在,它的行为会有所不同。

touch 命令的主要功能
touch 命令主要有两个核心用途:
创建一个空文件
这是 touch 最常见的用途之一,当你使用 touch 命令一个不存在的文件名时,系统会创建一个大小为 0 字节的新空文件。
语法:
touch [文件名]
示例:
在当前目录下创建一个名为 newfile.txt 的空文件。

touch newfile.txt
执行后,你可以使用 ls -l 命令来查看,会发现 newfile.txt 被创建了,并且文件大小为 0。
ls -l newfile.txt # 输出类似于: # -rw-r--r-- 1 username staff 0 Oct 26 10:30 newfile.txt
一次性创建多个文件:
你可以一次提供多个文件名,touch 会为每个文件名都创建一个空文件。
touch file1.log file2.log file3.log
更新现有文件的时间戳
当一个文件已经存在时,touch 命令不会修改文件内容,但会更新文件的访问时间和修改时间。
- 访问时间:文件最后一次被读取的时间。
- 修改时间:文件最后一次被修改(内容改变)的时间。
语法:

touch [已存在的文件名]
示例:
假设你有一个名为 report.docx 的文件,它的修改时间是昨天,现在你想更新它的时间戳为当前时间。
touch report.docx
再次使用 ls -l 查看,你会发现 report.docx 的修改时间已经更新为当前时间。
常用选项
touch 命令支持一些选项,让它更加强大和灵活。
-a:仅更新访问时间
使用 -a 选项,只会更新文件的访问时间,而不会修改修改时间。
touch -a existing_file.txt
-m:仅更新修改时间
使用 -m 选项,只会更新文件的修改时间,而不会修改访问时间。
touch -m existing_file.txt
-c 或 --no-create:不创建新文件
这是一个非常实用的选项,如果指定的文件不存在,touch 默认会创建它,但如果你只想更新已存在文件的时间戳,并希望文件不存在时不进行任何操作(而不是报错或创建新文件),就可以使用 -c。
touch -c non_existent_file.txt
non_existent_file.txt 不存在,什么也不会发生,如果存在,它的时间戳会被更新。
-r 或 --reference:参考另一个文件的时间戳
这个选项允许你将一个文件的时间戳设置为与另一个参考文件完全相同。
语法:
touch -r [参考文件] [目标文件]
示例:
假设 template.conf 是一个模板文件,你希望新创建的 config.conf 文件拥有和它一模一样的时间戳。
touch -r template.conf config.conf ls -l template.conf config.conf # 你会发现这两个文件的时间戳是完全一样的
-t:使用指定的时间戳
你可以使用 -t 选项来为文件设置一个精确的、自定义的时间戳,而不是使用当前系统时间。
语法:
touch -t [[CC]YY]MMDDhhmm[.ss] [文件名]
CC:世纪(可选)YY:年份的后两位(可选)MM:月份(01-12)DD:日期(01-31)hh:小时(00-23)mm:分钟(00-59)ss:秒(00-59,可选)
示例:
将文件 project_note.txt 的时间戳设置为 2025年10月26日 14:30:00。
touch -t 202510261430 project_note.txt
注意年份如果使用两位数,需要加上世纪,2310261430 会被解释为 1923年,推荐使用四位年份 202510261430 来避免混淆。
实际应用场景
- 快速创建文件:当你需要快速创建一个文件来测试脚本或进行其他操作时,
touch是最快的方式。 - 强制脚本或程序更新:有些程序或脚本会检查配置文件的修改时间,如果你修改了配置文件但忘记重启服务,可以手动
touch一下配置文件,让程序认为它被更新了,从而重新加载它。 - 批量创建文件:结合循环,可以快速创建大量有规律的文件名。
for i in {1..5}; do touch "backup_${i}.zip" done # 这会创建 backup_1.zip, backup_2.zip, ..., backup_5.zip - 隐藏文件:在 macOS 和 Linux 中,以点 开头的文件是隐藏文件。
touch同样可以创建它们。touch .hidden_config
与图形界面(Finder)的关联
在 macOS 的 Finder 中,当你创建一个新文件或文件夹时,或者修改一个文件后,其“修改日期”会自动更新,这个“修改日期”对应的就是 touch 命令所更新的修改时间。
你可以通过在 Finder 中右键点击文件 -> “显示简介” (Get Info) 来查看文件的创建日期、修改日期等信息,这些信息与 ls -l 命令显示的内容是对应的。
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 创建空文件 | touch my_file.txt |
如果文件不存在,则创建它。 |
| 更新时间戳 | touch my_file.txt |
如果文件存在,更新其访问和修改时间为当前时间。 |
| 仅更新访问时间 | touch -a my_file.txt |
只更新文件的访问时间。 |
| 仅更新修改时间 | touch -m my_file.txt |
只更新文件的修改时间。 |
| 不创建文件 | touch -c my_file.txt |
如果文件不存在,不进行任何操作。 |
| 复制时间戳 | touch -r source.txt dest.txt |
将 dest.txt 的时间设置为和 source.txt 一样。 |
| 设置指定时间 | touch -t 202510261430 my_file.txt |
将文件时间精确设置为 2025-10-26 14:30:00。 |
touch 是一个看似简单但功能强大的命令,是掌握 macOS/Linux 命令行的基础工具之一。
