рекурсивное обновление меток времени в unix - PullRequest
1 голос
/ 07 января 2010

Когда я создаю каталог, скажем, d1 и через 5 секунд d1 / d2, тогда метка времени d1 обновляется до метки d2. Через 5 секунд, когда я создаю d1 / d2 / d3, только метка времени d2 обновляется до d3, но не d1.

По сути, мое требование заключается в том, что не только родительская папка, но и все папки из корневой в родительскую папку должны обновляться со временем родительской папки.

Есть ли способ обновить метку времени d1 с помощью метки d3?

Пожалуйста, уточните.

Ответы [ 3 ]

3 голосов
/ 07 января 2010
find . -type d -exec touch -m -r d3 {}\;

Находит все каталоги в текущем каталоге и обновляет метку времени до текущего времени ...

2 голосов
/ 07 января 2010
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.

1 голос
/ 07 января 2010

Это установит время модификации только каталогов , которые находятся на пути к добавленному файлу.

Так что в этом дереве

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

Будут затронуты только d1 и d1/d2.

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