复制一个文件并保持与原始文件相同的时间戳

61 files timestamp cp

我需要复制文件,然后我需要将时间戳属性更改为原始文件。我怎样才能用终端或任何其他方式做到这一点?

ste*_*ver 117

cp通过添加-p--preserve选项,您可以在复制时保留原始文件的时间戳:

   -p     same as --preserve=mode,ownership,timestamps

   --preserve[=ATTR_LIST]
          preserve the specified attributes (default: mode,ownership,time?
          stamps), if  possible  additional  attributes:  context,  links,
          xattr, all
Run Code Online (Sandbox Code Playgroud)

所以只保留时间戳

cp --preserve=timestamps oldfile newfile
Run Code Online (Sandbox Code Playgroud)

或同时保留模式和所有权

cp --preserve oldfile newfile
Run Code Online (Sandbox Code Playgroud)

或者

cp -p oldfile newfile
Run Code Online (Sandbox Code Playgroud)

其他选项可用于递归复制 - 一个常见的选项是cp -a( cp --archive),它额外保留了符号链接。

  • 我认为这应该是公认的答案。它用一个命令解决了这个问题,我认为这是 OP 真正想要的。这也很好解释。 (5认同)
  • 令人惊讶的是,当从 FAT32 分区复制到 exFAT 分区时,这在 macOS 上不起作用。 (2认同)

小智 31

如果要保留原始时间戳,请使用

$ touch -r <original_file> <new_file>
Run Code Online (Sandbox Code Playgroud)

这会从另一个文件复制时间戳。

有关更多信息,请参阅此博客文章:假文件访问、修改和更改时间戳

  • 当您将“-p”选项从“cp”中删除时很有帮助,谢谢。 (4认同)