是否可以使用存储在变量中的值设置目录的修改日期和时间?

时间:2018-12-17 18:56:05

标签: linux shell ksh sunos

我在运行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

有什么办法可以使用触摸来完成此操作?如果是,我在做什么错了?

0 个答案:

没有答案