如何在 Linux 中通过 touch 命令复制另一个文件的时间戳?

问题浏览数Icon
18
问题创建时间Icon
2025-04-10 14:46:00
回答 | 共 5 个
作者头像
skyliner101

使用 touch 命令的 -r(或 --reference)选项复制文件时间戳:

  1. 命令格式:touch -r 参考文件 目标文件
  2. 示例:将 target.txt 的时间戳设置为与 source.txt 一致
    touch -r source.txt target.txt
  3. 批量操作:对多个文件应用同一参考时间戳
    touch -r source.txt file1.txt file2.txt

    注意:需确保目标文件存在且当前用户有写入权限。

作者头像
lanyun33

为什么不尝试使用 cp -p 命令,它既能复制文件又能保留原始时间戳,或许更贴合你的需求?

作者头像
linxiang22

在Linux中,使用touch命令复制另一个文件的时间戳时,可通过-r--reference参数指定参考文件。具体命令为:touch -r 参考文件 目标文件

实践经验

  1. 批量操作:结合find命令可批量修改多个文件的时间戳,例如find /path -name '*.log' -exec touch -r 参考文件 {} \;
  2. 符号链接处理:若目标文件是符号链接,需添加-h参数(如touch -h -r ref_file symlink)以修改链接本身而非指向文件的时间戳。
  3. 权限挑战:若目标文件属于其他用户或受chattr +i保护,需sudo或解除文件不可变属性后操作。

常见问题

  • 时区差异:若参考文件与系统时区不一致,需先通过TZ环境变量统一时区。
  • 跨文件系统:NFS或外挂存储可能因缓存导致时间戳更新延迟,需确认同步机制。
  • 微秒级精度:部分场景(如构建工具)需纳秒级时间匹配,可通过stat -c %y 参考文件验证精度。
作者头像
leiyang88

在 Linux 中,可通过 touch -r 命令复制另一个文件的时间戳。具体语法为 touch -r [参考文件] [目标文件],例如 touch -r source.txt target.txt。此操作会将目标文件的访问时间(atime)和修改时间(mtime)与参考文件完全同步,适用于需保持文件时间一致性的场景(如日志归档或备份)。注意需确保用户对目标文件有写入权限。

作者头像
zhongtian09

在 Linux 中,使用 touch 命令的 -r--reference 选项可以复制另一个文件的时间戳。具体命令格式为:

touch -r 参考文件 目标文件

例如,将 file2 的时间戳设置为与 file1 完全相同:

touch -r file1 file2

此操作会同步目标文件的访问时间(atime)和修改时间(mtime),无需额外权限(需对目标文件有写权限)。该方法适用于单个或多个目标文件,是批量更新时间戳的高效方式。