在 Linux 系统中,touch 命令是一个基础且常用的文件操作工具,主要用于创建新文件或更新已有文件的时间戳,尽管命令功能看似简单,但它在日常系统管理、脚本编写和文件维护中发挥着重要作用,本文将详细介绍 touch 命令的基本用法、核心功能、常见参数及实际应用场景,帮助读者全面掌握这一实用工具。

touch 命令的基本功能
touch 命令最核心的功能有两个:一是创建一个空文件,二是更新文件的访问时间(atime)和修改时间(mtime)。
创建空文件
当指定的文件不存在时,touch 命令会自动创建一个空文件,在当前目录下创建一个名为 test.txt 的文件,只需执行:
touch test.txt
执行后,可通过 ls -l 查看文件详情,会发现文件大小为 0 字节,时间戳为当前系统时间。
更新文件时间戳
如果文件已存在,touch 命令不会修改文件内容,仅更新其时间属性,Linux 文件系统通常包含三个时间戳:
- 访问时间(atime):文件最后一次被读取或执行的时间;
- 修改时间(mtime)最后一次被修改的时间;
- 状态改变时间(ctime):文件属性(如权限、所有者)最后一次改变的时间。
默认情况下,touch会同时更新 atime 和 mtime 为当前系统时间,对现有文件example.log执行touch后,ls -l显示的修改时间会刷新为当前时间。
常用参数与扩展功能
touch 命令支持多个参数,可灵活控制文件时间戳的修改行为,以下为常用参数详解:
-a:仅更新访问时间(atime)
touch -a file.txt
此参数仅修改文件的 atime,mtime 保持不变,适用于需要模拟文件被访问的场景,例如在脚本中记录文件被读取的时间。

-m:仅更新修改时间(mtime)
touch -m file.txt
与 -a 相反,-m 仅修改文件的 mtime,atime 不变,常用于强制更新文件的时间戳,例如在日志文件处理中标记文件内容已“处理”。
-c:不创建新文件
默认情况下,若目标文件不存在,touch 会创建新文件,使用 -c 参数可避免创建文件,仅更新已存在文件的时间戳:
touch -c non_existent_file.txt # 文件不存在时不会报错,也不会创建
此参数在脚本中尤为实用,可避免意外生成空文件。
-r:参考文件时间戳
通过 -r 参数,可以将目标文件的时间戳设置为与参考文件一致:
touch -r source.txt target.txt # target.txt 的时间戳与 source.txt 一致
适用于需要同步多个文件时间戳的场景,例如备份文件时保持时间属性一致。
-t:指定自定义时间戳
使用 -t 可按 [[CC]YY]MMDDhhmm[.ss] 格式设置文件时间,

CC:世纪(可选);YY:年份(可选);MMDD:月日;hhmm:时分;.ss:秒(可选)。
将文件时间设置为 2023 年 10 月 1 日 12 时 30 分 0 秒:touch -t 20231001123000 custom_file.txt
实际应用场景
批量创建测试文件
在开发或测试环境中,可能需要快速创建多个空文件,结合通配符,touch 可高效完成批量创建:
touch test_{1..10}.txt # 创建 test_1.txt 至 test_10.txt 共 10 个文件
清理临时文件的时间戳
在脚本中,若需要判断临时文件是否“过期”,可通过 touch 更新时间戳,并结合 find 命令清理超过一定时间的文件:
touch -m temp_file.txt # 标记文件为“最新” find /tmp -name "temp_file.txt" -mtime +7 -delete # 删除 7 天前的文件
同步文件时间戳
在文件同步或备份任务中,确保源文件和目标文件的时间戳一致可避免重复同步。
touch -r original.txt backup.txt # 同步时间戳
注意事项
- 权限限制:若用户对目标文件所在目录无写权限,
touch会报错(即使文件不存在)。 - 符号链接:默认情况下,
touch修改的是符号链接指向的文件时间戳,若需修改链接本身的时间戳,需使用-h参数。 - 时间精度:文件时间戳的精度取决于文件系统类型(如 ext4 支持纳秒级精度,但
ls默认显示秒级)。
touch 命令虽小,却是 Linux 文件操作中的“瑞士军刀”,通过灵活运用其参数,用户可高效完成文件创建、时间戳管理及批量操作等任务,无论是系统管理员编写维护脚本,还是开发者处理临时文件,掌握 touch 的核心功能都能显著提升工作效率,在日常使用中,建议结合 ls、stat 等命令查看文件时间属性,以更精准地控制文件行为。

















