Могу ли я установить дату и время изменения каталога, используя значение, хранящееся в переменной?
У меня есть скрипт оболочки 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
Есть ли способ сделать это с помощью касания и если да, что я делаю не так?