Могу ли я установить дату и время изменения каталога, используя значение, хранящееся в переменной? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть скрипт оболочки korn на сервере под управлением SunOS 5.9, и его необходимо отредактировать для выполнения операции с подкаталогом, но без обновления даты изменения родительского каталога.

Уже потративглядя на это, я сначала подумал, что мог бы сохранить mtime родительского каталога в переменной, а затем сбросить его с помощью touch, но это, похоже, не работает, так как любые примеры, которые я нашел, используют параметр -d, которыйУ меня нет.

У меня есть опция -r, поэтому я попытался создать временный файл, установить его mtime, используя значение в переменной, а затем установить mtime родительского каталога, используявременный файл в качестве ссылки:

    mtime=$(stat -c %y ${pardir})       

    echo "Removing directory ${i}"
    rmdir ${i} 2>&-

    mtime2=$(stat -c %y ${pardir})
    echo "Old modified date of ${pardir} is ${mtime}"
    echo "New modified date of ${pardir} is ${mtime2}"

    echo "Create new timestamp reference file and set to ${mtime}"
    touch tstamp.tmp
    touch -m ${mtime} tstamp.tmp

    mtime2=$(stat -c %y tstamp.tmp)
    echo "Modified date of tstamp file is now ${mtime2}"

    echo "Update ${pardir} modified date using reference file"
    touch -r "tstamp.tmp" ${pardir}

    echo "Final modified date is $(stat -c %y ${pardir})"
    rm tstamp.tmp

В приведенном выше примере, когда я просматриваю вывод, я вижу, что tstamp.tmp mtime фактически никогда не сбрасывается до значения, хранящегося в переменной mtime.Итак, я получаю что-то вроде этого:

############################
############################
Removing directory /dir1/1
Old modified date of /dir1 is 2018-12-17 18:40:53.777179000 +0000
New modified date of /dir1 is 2018-12-17 18:44:39.948773000 +0000
Create new timestamp reference file and set to 2018-12-17 18:40:53.777179000    +0000
Modified date of tstamp file is now 2018-12-17 18:44:39.000000000 +0000

Есть ли способ сделать это с помощью касания, и если да, что я делаю не так?

...