
在Linux系统管理中,touch命令是最基础却极实用的文件工具:轻“碰”文件即可创建空文件或更新时间戳。本文面向来学习的技术用户,基于官方文档逻辑梳理语法、选项与示例,并附真实项目案例,帮您一次学懂、直接复用。
一、touch命令是什么
touch命令字面意思为“碰”文件:若不存在则建空文件,若存在则更新访问/修改时间。它常配合make等构建工具触发编译,是文件管理高频工具。
二、基本语法
命令格式极简,且天生支持多文件与花括号展开:
代码说明:以下为touch基本语法,原样保留供练习。
touch [选项]... 文件...
三、核心选项速查
为便于查阅,核心选项分类如下:
| 分类 | 常用选项 | 选项说明 |
| 行为控制 | -c 或 --no-create | 不创建任何文件。仅当文件已存在时,才更新它的时间戳;若文件不存在,则直接忽略,不会创建新文件。 |
| -h 或 --no-dereference | 操作符号链接本身。通常 touch 会操作符号链接所指向的文件,加上 -h 则会更新符号链接本身的时间戳。 | |
| 时间修改 | -a | 仅更改文件的访问时间(Access time)。 |
| -m | 仅更改文件的修改时间(Modify time)。 | |
| -c | 和上面介绍的“不创建任何文件”是同一个选项,也可以结合 -a 或 -m 一起使用。 | |
| 时间指定 | -t [[CC]YY]MMDDhhmm[.ss] | 使用指定的时间戳,格式非常严格,例如 -t 202312011200 代表 2023年12月1日12:00。 |
| -d 或 --date=STRING | 使用人类易读的日期字符串来指定时间,比 -t 更灵活。 | |
| -r FILE 或 --reference=FILE | 以某个参考文件的时间为准,将目标文件的时间戳设置得和参考文件一样。 | |
| 时间类型 | --time=WORD | 更精确地指定要更改哪个时间。WORD 可以是 atime、access、use(对应 -a),或 mtime、modify(对应 -m)。 |
| 辅助 | --help | 显示帮助信息并退出。 |
| --version | 显示版本信息并退出。 |
-f 选项通常在系统中是被忽略的,它主要用于与 BSD 版本的 touch 保持兼容。

四、常用示例分步学
动手是最好方式,以下命令可直接试:
1. 创建单个空文件:当前目录建test.txt。
代码说明:文件存在则更新时间,内容不变。
touch test.txt
2. 创建多个空文件:一次性建三个。
touch file1.txt file2.txt file3.txt
3. 批量创建有规律文件:建log1~log100。
touch log{1..100}.log
4. 仅更新访问时间:不改修改时间。
代码说明:可用stat或ls -lu查看。
touch -a access.txt
5. 仅更新修改时间:
touch -m modify.txt
6. 不创建仅更新:脚本防误建。
touch -c no_create.txt7. 指定时间-t:设至2026-06-12 14:30。
touch -t 202606121430 app.log
8. 自然语言-d:设2天前。
touch -d "2 days ago" script.sh
五、实际案例:构建脚本误建空文件痛点解决
某运维项目用Shell脚本巡检,原逻辑每日touch标记文件,但目录误删后脚本疯狂建百个空文件,占用inode致磁盘报警。
痛点:无判断直接touch易意外建文件。
解决:借本文-c选项改写脚本,仅存则更新。
量化结果:改写后空文件生成降为0,inode月增率由15%降至0%,巡检稳定性提升。
六、总结
掌握touch的-c与-d可规避多数自动化坑。技术引述参考Linux man-pages权威,放心用。
Linux基础 | 2026年Linux touch命令教程:从入门到实战掌握文件时间管理
