15

如何在基于 Unix 的系统中将修改日期和时间从一个文件/目录“复制”到另一个文件/目录?

4

6 回答 6

29

你有一些选择:

  • touch -t STAMP -m file如果您想更改时间,请使用
  • 如果cp --preserve=timestamps您正在复制文件并希望保留时间,请使用
  • 用于touch -r将时间设置为“参考”文件
于 2013-03-03T00:19:59.117 回答
3

以后为了方便起见,将以下行放入您的 .bashrc 文件中:

cptimestamp() {
  if [ -z $2 ] ; then
    echo "usage: cptimestamp <sourcefile> <destfile>"
    exit
  fi
  touch -d @$(stat -c "%Y" "$1") "$2"
}

执行“source ~/.bashrc”,你就可以开始了。如果您更喜欢脚本,请删除第一行和最后一行——然后在前面加上“#!/bin/sh”

于 2014-03-17T09:24:40.767 回答
3

这将完全满足您的要求:

触摸 -r "source_file" "destination_file"

于 2020-12-16T09:36:58.290 回答
1

您可以使用statunix 时间戳格式获取源文件的时间戳,然后使用将其传播到目标文件touch -d

src_file=/foo/bar
dst_file=/bar/baz

touch -d @$(stat -c "%Y" "$src_file") "$dst_file"

注意:这仅适用于支持使用前缀的GNU coreutilsunix 时间戳的情况@touch

于 2013-03-03T00:35:12.130 回答
0

使用touch;它包含几个可选标志,允许您设置此类属性。

于 2013-03-03T00:19:47.140 回答
0

如果您使用 cp,请使用 -p 选项来保留 mod 时间。cp -p

于 2013-03-03T00:29:36.477 回答