在 Linux 中修改文件的时间(atime / mtime / ctime)通常使用 touch 命令。下面按常见需求详细说明。
| 时间类型 | 含义 | 是否可修改 |
|---|---|---|
| atime | 最后访问时间 | ✅ 可修改 |
| mtime | 最后内容修改时间 | ✅ 可修改 |
| ctime | 最后状态/元数据修改时间 | ❌ 不能直接改(随 mtime 自动变) |
查看文件时间:
stat 文件名
touch 修改时间(最常用)touch 文件名
会同时更新 mtime 和 atime
touch -t YYYYMMDDHHMM.SS 文件名
touch -t 202401011200.00 test.txt
时间含义:
2024-01-01 12:00:00
touch -d "2024-01-01 12:00:00" test.txt
也支持:
touch -d "2 days ago" test.txt
touch -d "yesterday" test.txt
touch -a -d "2024-01-01 10:00:00" test.txt
touch -m -d "2024-01-01 10:00:00" test.txt
touch -r 源文件 目标文件
示例:
touch -r a.txt b.txt
b.txt 的时间会变成 a.txt 的时间
.log 文件touch -d "2023-12-31" *.log
find . -exec touch -d "2024-01-01" {} \;
✅ 需要 写权限
✅ 修改时间不会影响文件内容
✅ ctime 会在你修改 mtime 时自动更新
✅ 有些文件系统(如挂载时 noatime)会影响 atime
# 查看时间
stat file.txt
# 改为当前时间
touch file.txt
# 指定时间
touch -d "2024-06-01 08:30:00" file.txt
# 复制时间
touch -r old.txt new.txt
如果你有具体场景(比如:伪造日志时间、批量恢复时间、Docker/挂载目录),可以告诉我,我可以给你更精确的命令。