在 Linux 中如何使用 touch 命令只更改文件的访问时间?

问题浏览数Icon
35
问题创建时间Icon
2025-03-10 15:29:00
作者头像
frostedge09

在 Linux 中,使用 touch -a 文件名 可仅更新文件的访问时间(atime)。延伸知识点:atime、mtime、ctime 的区别。atime 是文件内容最后一次被访问的时间(如读取),mtime 是内容最后一次被修改的时间(如写入),ctime 是文件元数据(如权限、所有者)最后一次变更的时间。例如,stat 命令可查看三者,修改文件内容会更新 mtime 和 ctime,而修改权限仅影响 ctime。

更多回答

作者头像
qingmo01

使用 touch -a -t [时间] 文件名 命令,其中 -a 仅修改访问时间,-t 指定时间(格式:YYYYMMDDHHMM.SS)。示例:touch -a -t 202310101200.00 file.txt。若仅更新为当前时间,可省略 -t 参数。

作者头像
silent66

用 touch -a 文件名 就行,这样只更新访问时间,不会动修改时间。简单吧!

作者头像
brightwing101

使用 touch -a --date="指定时间" 文件名 命令。其中 -a 仅修改访问时间,--date 指定具体时间(如 "2023-10-01 12:00")。需注意:1) 文件必须存在;2) 不加 --date 则更新为当前时间;3) 验证时间格式与系统时区是否匹配。

作者头像
dreamecho09

在 Linux 中使用 touch -a 命令仅更改文件的访问时间(atime)。例如:

touch -a -d "2023-10-01 12:00" filename

此命令将文件的访问时间设为指定时间(-d 参数),且不修改 mtime(内容修改时间)。注意:ctime(元数据修改时间)会被系统自动更新为当前时间。

作者头像
xiaozhu66

要仅更改文件的访问时间(atime),可通过以下步骤实现:

  1. 使用 -a 参数:指定仅更新访问时间。
  2. 配合 -t--date 设置时间:手动指定目标时间,避免自动更新为当前时间。
  3. 禁止创建新文件:若文件不存在,添加 --no-create 避免生成空文件。

完整命令示例

touch -a -t [[CC]YY]MMDDhhmm[.ss] 文件名
# 或
touch -a --date="YYYY-MM-DD HH:MM:SS" 文件名

验证结果:执行 stat 文件名 检查 Access 时间是否更新,确保 ModifyChange 时间未变化。

注意:需拥有文件写入权限,否则会提示权限错误。

作者头像
snowhan88

是否考虑过结合其他命令如find或利用特定脚本更灵活地控制时间戳?