linux中touch命令可批量调整文件时间戳:一、用-d设访问与修改时间;二、用-a/-m分别设置;三、用-r基于参考文件同步;四、用“ago/hence”做时间偏移;五、脚本化批量处理并模拟创建时间。

如果您需要批量调整文件的时间戳,包括访问时间、修改时间甚至创建时间(在支持的文件系统上),Linux 中的 touch 命令提供了灵活且高效的方式。以下是实现该目标的多种具体方法:
一、使用 touch 修改访问与修改时间
touch 默认可同时更新文件的访问时间(atime)和修改时间(mtime)。通过指定时间参数,可将两者设为任意合法时间点。
1、执行命令:touch -d "2023-05-12 14:30:00" filename.txt
2、若需同时设置多个文件,可使用通配符:touch -d "2023-05-12 14:30:00" *.log
3、验证结果:运行 stat filename.txt 查看 Access 和 Modify 字段是否已变更
二、分别独立设置访问与修改时间
当需对 atime 和 mtime 进行差异化控制时,可利用 -a 和 -m 选项分离操作,避免相互覆盖。
1、仅更新访问时间:touch -a -d "2023-05-12 09:15:00" filename.txt
2、仅更新修改时间:touch -m -d "2023-05-12 16:45:00" filename.txt
3、确认分离效果:stat filename.txt 输出中 Access 和 Modify 时间应互不相同
三、基于参考文件同步时间戳
当需使目标文件的时间属性与某参照文件完全一致时,无需手动输入时间字符串,直接复用其时间戳即可。
1、准备一个时间准确的参考文件:touch -d "2022-11-08 10:20:30" ref_file
2、将目标文件时间设为与 ref_file 完全一致:touch -r ref_file target_file
3、批量应用该操作:touch -r ref_file file1.txt file2.log dir1/
四、使用时间偏移量动态调整
不依赖绝对时间,而是以当前时间为基础进行加减运算,适用于按固定间隔统一偏移所有文件时间戳的场景。
1、将文件修改时间提前 2 天:touch -d "2 days ago" filename.txt
2、将访问时间延后 3 小时:touch -a -d "3 hours hence" filename.txt
3、组合偏移(先设 mtime 为昨天,再设 atime 为 1 小时后):touch -m -d "yesterday" filename.txt && touch -a -d "1 hour" filename.txt
五、脚本化一键批量处理(含创建时间模拟)
ext4 等现代文件系统不直接暴露“创建时间”(crtime),但可通过更改 inode 修改时间并禁用自动更新来近似模拟。以下脚本可实现单命令触发多文件时间统一重置。
1、创建脚本文件:echo '#!/bin/bash\ntouch -d "$1" "$@"' > settime.sh
2、赋予执行权限:chmod +x settime.sh
3、一键调用:./settime.sh "2024-01-01 00:00:00" file1 file2 dir/










