我在运行SunOS 5.9的服务器上有一个korn shell脚本,需要对其进行编辑以对子目录执行操作,但不更新父目录的修改日期。
已经花了一些时间研究这个问题,我首先想到可以将父目录的mtime存储在一个变量中,然后使用touch
对其进行重置,但是这似乎不适用于任何示例发现使用了-d
选项,而我没有。
但是我确实有-r
选项,因此我尝试创建一个临时文件,使用变量中的值设置其mtime,然后使用temp文件作为参考设置父目录的mtime:< / p>
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
有什么办法可以使用触摸来完成此操作?如果是,我在做什么错了?