修改目录而不更改时间戳

时间:2013-01-09 22:17:53

标签: shell

有没有办法将文件A复制到目录B而不更改B的时间戳?如果是,那么它是什么?

编辑:

更大的目标:我正在挖掘一年多前写的一些代码。我发现我做过的事情总会让我对未来的自我感到困惑。我想在那里添加一个README文件来解释这个问题。但我想保留上次在该目录中工作的时间。

最后:

感谢您的回答。我最终做了“触摸-r B / newestoldfile B”,这对我来说已经足够了。即使像有人指出的那样,在所有情况下,这都不是我问题的确切答案。我投了两个答案,但不得不接受。我选择了一个简要提到-r选项的那个:)

3 个答案:

答案 0 :(得分:3)

捕获B目录的旧mtime。然后移动文件,然后使用touch命令用您存储的旧mtime重写B目录的mtime。

old_mtime=$(stat -c%Y B)
mv A B
touch -d"$(date --date="@$old_time")" B

我们使用@$old_time创建代表自纪元以来$old_time秒的日期,这是stat给我们的。

答案 1 :(得分:2)

您可以在使用stat -c %Y进行复制之前从目录中获取时间戳,然后使用touch命令修改之后的时间戳。

如果您只想将目录A中的时间戳复制到B:

touch -r A B

答案 2 :(得分:1)

编码时,您应使用GitMercurialSubversion等源代码管理系统。它允许您创建项目文件的存储库,编辑文件,注册版本以及更改内容的注释,最终将编辑后的文件合并到项目中,使用分布式系统将其托管在云中。

其他人已经正确地回答了你提到的方法,但是我想给你一个更好的建议,使用另一个你将来也会更好用的解决方案。