首页/系统/Linux 运维命令速查/touch 创建空文件与修改时间
文件与目录76 条

touch 创建空文件与修改时间

创建空文件或刷新文件时间戳;-d/-t 可指定时间,常用于触发构建系统、测试增量逻辑与伪造时间场景。

Linux 运维命令速查系统更新于 2026-10-13

touch 是什么

touch 创建空文件或刷新文件时间戳。它最常用的场景其实不是建文件,而是改时间:触发构建系统重新编译、让增量同步重新处理某个文件、造出指定时间的测试数据。用 -d 或 -t 可以指定具体时间,加 -c 则在文件不存在时跳过而不创建。

基本信息

适用平台Linux、Unix 通用(coreutils)
命令语法touch [选项] 文件...
常用选项-d 指定时间字符串 / -t 指定固定格式时间 / -c 文件不存在则不创建 / -a 只改访问时间 / -m 只改修改时间 / -r 参照其他文件的时间
影响面修改时间会被备份、同步与构建逻辑读取

典型使用场景

  • 强制重新编译:改动头文件后让构建系统认为目标文件过期
  • 触发增量同步:让某个文件被判定为更新而重新传输
  • 生成测试数据:造出指定日期的文件来验证清理脚本
  • 占位:需要文件存在才能通过的检查点
  • 对齐时间戳:把一批文件的修改时间统一到同一时刻

常用示例

常用示例
touch newfile.txt
touch app.cpp app.h          # 触发重新编译
touch -d "2026-10-01 08:00:00" report.txt
touch -c keep.conf           # 仅更新时间,文件不存在则跳过
touch -r reference.txt copy.txt   # 复制另一个文件的时间戳
ls -l --time-style=full-iso report.txt

常用选项

选项作用提示
无选项创建空文件或更新两个时间文件已存在时不清空内容
-d 字符串指定时间支持可读的时间描述
-t 时间指定固定位数的时间格式便于脚本拼接生成
-c文件不存在时不创建只想改时间时用它
-a只更新访问时间测试访问行为时使用
-m只更新修改时间更常用的精确控制
-r 参照复制参照文件的时间批量对齐时间戳
touch 对已存在的文件不会清空内容,只改时间戳;但改完之后备份、同步与构建的判断都会跟着变化。
需要精确写入时间时用固定位数格式更可靠,可读的时间描述依赖解析规则,在不同语言环境下可能有差异。

易错点

  • 用 touch 触发的重编译会掩盖依赖配置错误,真正的解法是修正构建规则
  • 同步工具依赖修改时间判断新旧,随意改时间会造成重复传输或漏传
  • 文件不存在时默认会创建,脚本里无意中造出空文件会干扰后续判断
  • 目录的时间戳影响其下文件的新增判断,批量操作时别顺手改目录时间
  • 把时间改成未来值后,后续正常写入看起来像没有更新

数据来源与参考

  • man 1 touch(GNU coreutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌