一、基础选项
**-a / --time=atime / --time=use**
功能:仅修改文件的访问时间(atime),不改变修改时间(mtime)。
示例:
bash
touch -a file.txt # 更新访问时间为当前时间
touch -a -t 202503141200 file.txt # 设置访问时间为2025-03-14 12:00:00
引用:
**-c / --no-create**
功能:不创建新文件(若文件不存在),仅更新已有文件的时间戳。
示例:
bash
touch -c non_existing.txt # 不创建文件,仅更新时间(若存在)
引用:
**-d / --date=字符串**
功能:使用指定字符串表示时间(支持自然语言格式)。
示例:
bash
touch -d “2 days ago” file.txt # 设置时间为两天前
touch -d “next Friday” file.txt # 设置时间为下周五
引用:
**-m / --time=modify / --time=mtime**
功能:仅修改文件的修改时间(mtime),不改变访问时间(atime)。
示例:
bash
touch -m file.txt # 更新修改时间为当前时间
引用:
**-r / --reference=文件**
功能:将目标文件的时间戳设置为参考文件的相同时间。
示例:
bash
touch -r source.txt target.txt # target.txt时间与source.txt一致
引用:
**-t**
功能:使用指定时间戳(格式为 [[CC]YY]MMDDhhmm[.ss])修改文件时间。
示例:
bash
touch -t 202503141230.45 file.txt # 设置时间为2025-03-14 12:30:45
引用:
二、文件与目录操作
批量创建文件
功能:通过通配符或列表一次性创建多个文件。
示例:
bash
touch {a…c}.log # 创建a.log, b.log, c.log
touch file{1…5}.txt # 创建file1.txt至file5.txt
引用:
递归创建目录
功能:通过 -p 选项递归创建目录(若目录不存在)。
示例:
bash
touch -p dir1/dir2/file.txt # 创建dir1/dir2目录及file.txt
引用:
三、特殊场景处理
处理符号链接
**-h / --no-dereference**
功能:修改符号链接本身的时间戳,而非链接指向的文件。
适用场景:仅当系统支持修改符号链接所有者时有效。
示例:
bash
touch -h symlink.txt # 修改链接时间而非目标文件时间
引用:
避免覆盖现有文件
**-c** 或 **-h**
功能:若文件不存在,不创建新文件且不报错。
示例:
bash
touch -c non_existing.txt # 仅更新时间(若存在)
引用:
四、组合使用示例
设置特定时间并保留其他属性
bash
touch -d “2025-01-01 00:00:00” -m file.txt # 设置时间为2025-01-01 00:00,仅修改mtime
批量更新多个文件时间
bash
touch -r reference.txt *.log # 将所有.log文件时间设为reference.txt时间
创建并初始化文件
bash
touch file.txt && echo “content” > file.txt # 创建文件并写入内容
五、注意事项
权限问题
需对文件或目录有读写权限,否则报错 Permission denied。
解决方法:使用 sudo 提升权限:
bash
sudo touch -m /root/file.txt
时间格式兼容性
-d 和 -t 支持不同格式,需注意时间字符串的语法。
示例冲突:
bash
touch -t 20251301 # 错误:月份超出范围(01-12)
touch -d “2025-13-01” # 正确:自动解析为下一年的1月
符号链接默认行为
默认跟随链接修改目标文件时间,使用 -h 可改变此行为。
六、引用说明
选项功能与示例:
时间格式与符号链接处理:
权限与组合操作:
如需查看完整手册,可通过 man touch 或 touch --help 获取详细信息。