touch命令主要用于创建空文件和修改文件时间戳:不存在时创建0字节文件,存在时仅更新atime/mtime;支持多文件、引号处理空格名;-c避免误建;-t/-d/-r精确设时;-a/-m可单独控制访问或修改时间。

touch 命令在 Linux 运维中主要干两件事:一是快速创建空文件,二是精准控制文件的时间戳(atime 和 mtime),不改内容、不占空间,轻量又实用。
创建空文件(最常用)
直接运行 touch 文件名 即可:
- 文件不存在 → 创建一个大小为 0 字节的普通文件;
- 文件已存在 → 仅把它的访问时间(atime)和修改时间(mtime)更新为当前系统时间,内容完全不变;
- 支持一次创建多个,例如:touch a.log b.conf c.sh;
- 含空格的文件名需加引号:touch "my config.txt"。
避免误建文件:用 -c 选项
运维脚本中常需“只改时间、绝不新建”,这时加 -c 很关键:
- touch -c exist.txt → 存在则刷新时间,没问题;
- touch -c missing.txt → 不存在也不报错、不创建,静默跳过;
- 适合在自动化流程中安全处理不确定是否存在的重要配置文件。
精确设置时间戳(-t、-d、-r)
运维常需模拟历史时间、对齐日志时间或同步文件时效性:
- -t 格式化时间:如 touch -t 202506011420.30 app.log(设为 2025 年 6 月 1 日 14:20:30);
- -d 可读时间:如 touch -d "last week" backup.tar.gz 或 touch -d "2026-09-01 08:00" report.pdf;
- -r 复制参考文件:如 touch -r template.conf nginx.conf,让 nginx.conf 的 atime/mtime 完全匹配 template.conf —— 批量同步配置文件时间很高效。
单独控制访问或修改时间(-a 和 -m)
某些场景需区分 atime 和 mtime,比如测试缓存逻辑或审计追踪:
- touch -a -t 202601010000 file.dat → 只改访问时间;
- touch -m -t 202608151200 script.sh → 只改修改时间;
- 注意:ctime(状态变更时间)由系统自动更新,无法被 touch 直接设定。
实际使用时记得检查路径权限,/etc、/root 等目录需 sudo;批量操作前建议先用 ls -l 或 stat 验证效果。不复杂但容易忽略。











