名称
touch - 更改文件时间戳
简介
touch [选项]... 文件...描述
touch 命令用于更新文件的访问时间和修改时间。如果文件不存在,默认情况下会创建一个新的空文件。该命令主要用于:
创建新的空文件。
将现有文件的时间戳更新为当前时间。
强制将文件时间戳设置为特定日期和时间。
## 选项
退出状态
0 – 成功。
>0 – 发生错误(例如文件无法访问、无效日期格式等)。
常用示例
1. 创建空文件
touch newfile.txt如果文件不存在,则创建一个空文件;如果存在,则将其访问和修改时间更新为当前时间。
2. 更新现有文件的时间戳
touch existing.txt将 existing.txt 的访问和修改时间都改为当前时间。
3. 仅更改访问时间
touch -a file.txt4. 仅更改修改时间
touch -m file.txt5. 不创建新文件(仅更新时间戳)
touch -c maybe_exists.txt如果文件不存在,则不会创建它,也不报错。
6. 将文件时间戳设置为特定日期时间(使用 -t)
touch -t 202503151430 file.txt将 file.txt 的时间戳设置为 2025 年 3 月 15 日 14 时 30 分(格式:[[CC]YY]MMDDhhmm[.ss])。
7. 使用 -d 设置时间(更灵活)
touch -d "2025-03-15 14:30:00" file.txt或者使用相对时间:
touch -d "yesterday" file.txt
touch -d "next Friday" file.txt8. 参考另一个文件的时间戳
touch -r reference.txt target.txt将 target.txt 的时间戳设置为与 reference.txt 相同。
9. 同时设置访问时间和修改时间为不同值
touch -a -t 202503151200 file.txt # 访问时间改为 2025-03-15 12:00
touch -m -t 202503151800 file.txt # 修改时间改为 2025-03-15 18:0010. 批量创建多个文件
touch file1.txt file2.txt file3.txt11. 结合通配符使用(谨慎)
touch *.txt更新所有 .txt 文件的时间戳。
12. 使用 find 找到旧文件并更新时间戳
find . -name "*.log" -mtime +30 -exec touch {} \;将 30 天前修改过的 .log 文件时间戳更新为当前时间。
注意事项
如果没有提供任何选项,
touch会同时更新文件的访问时间和修改时间。使用
-c选项可以防止意外创建新文件,在脚本中很有用。-t参数格式严格:[[CC]YY]MMDDhhmm[.ss],世纪 CC 可省略(默认为当前世纪)。年份 YY 范围为 00-99,月份 MM 01-12,日 DD 01-31,时 hh 00-23,分 mm 00-59,秒 .ss 可选。-d选项接受多种自然语言日期格式,如"2025-03-15 14:30"、"2 days ago"等,但具体支持程度取决于系统(GNU 扩展)。如果目标文件是一个符号链接,
touch默认操作链接文件本身的时间戳。若希望操作链接指向的文件,需使用-h选项(GNU 版本支持)。某些 Unix 系统可能没有
-d选项,此时只能使用-t设置精确时间。创建文件时,
touch会使用当前用户的默认权限(受 umask 影响)。
相关命令
stat– 显示文件详细状态信息(包括时间戳)。ls -l– 查看文件修改时间。ls -lu– 查看文件访问时间。ls -lc– 查看文件状态更改时间。find– 根据时间戳查找文件。date– 显示或设置系统日期时间。