unix中的递归时间戳更新

时间:2010-01-07 15:04:21

标签: unix-timestamp

当我创建目录时说d1并且在5秒后d1 / d2,然后d1时间戳更新为d2。 5秒后,当我创建d1 / d2 / d3时,只有d2时间戳更新为d3而不是d1。

基本上,我的要求是不仅父文件夹,而且从根目录到父文件夹的所有文件夹都必须使用父文件夹的时间进行更新。

有没有办法用d3更新d1的时间戳?

请澄清。

3 个答案:

答案 0 :(得分:3)

find . -type d -exec touch -m -r d3 {}\;

查找当前目录中的所有目录并将时间戳更新为当前时间...

答案 1 :(得分:2)

find . -type d -exec touch  -r d1/d2/d3 -m {} \;
touch options:
-r :reference file. The timestamp of this ref file will be used for touching.
-m :change the modification time.

这将找到pwd下的所有目录,并将修改每个修改时间到d1 / d2 / d3目录的修改时间。假设您位于具有目录d1的目录中。

答案 2 :(得分:1)

这会将路径上的目录的修改时间设置为添加的文件。

所以在这棵树上

d1
d1/d2
d1/d2/d3  <-- this is the one we are adding
d1/d2a
d1/d2a/d3a

只有d1d1/d2会受到影响。

CHILD="d1/d2/d3"
DIR=`dirname "$CHILD"`
while [[ "$DIR" != "." ]]
do
    touch -m -r "$CHILD" "$DIR"
    DIR=`dirname "$DIR"`
done