为文件/目录提供与另一个相同的修改日期

时间:2013-03-03 00:18:13

标签: bash unix

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

6 个答案:

答案 0 :(得分:20)

你有一些选择:

  • 如果您想更改时间,请使用touch -t STAMP -m file
  • 如果您要复制文件并希望保留时间,请使用cp --preserve=timestamps
  • 使用touch -r设置“参考”文件的时间

答案 1 :(得分:2)

为方便起见,请将以下行放在.bashrc文件中:

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

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

答案 2 :(得分:1)

您可以使用unix时间戳格式的stat获取源文件的时间戳,然后使用touch -d

将其传播到目标文件
src_file=/foo/bar
dst_file=/bar/baz

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

注意:这只适用于使用前缀GNU coreutils@支持unix时间戳的touch

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

这完全可以满足您的要求:

touch -r“源文件”“目标文件”