如何根据日期和时间删除目录

时间:2013-06-18 13:21:15

标签: linux shell unix sh

下面的脚本将从cronjob中调用,我希望删除当前时间超过10分钟的目录。

我的脚本中遇到以下问题:

  • 从变量的开头修剪\n而不是从末尾修剪(将$oldDirday变量转储到hexdump会显示前导\n
  • 将600秒添加到当前时间
  • if测试正常运行

这就是我所拥有的:

#!/bin/sh

i=1
homeDirData="/home/user"$i"/dirToClean/"

while [ -d $homeDirData ]
do
   echo "Checking user"$i""

   for oldDir in $(find . -type d)
   do
      oldDirDay=$(ls -l $oldDir | awk '{print $7}')
      oldDirTime=$(ls -l $oldDir | awk '{print $8}' | tr -d ':')

      curDay=$(date +%d%t%R | awk '{print $1}')
      curTime=$(date +%d%t%R | awk '{print $2}')

      if [ $oldDirDay -lt $curDay ] && [ $oldDirTime -lt $(($curTime+600)) ]
      then
         find $homeDirData -type f -exec shred -f --remove {} \;
         rm -rf $homeDirData
      else
         echo "Nothing to remove"
      fi

      ((i+1))
   done
done

错误

  • 第17行:[:参数太多(if语句所在的位置)

问题

  • 没有删除任何内容

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

find $homeDirData -type d -mmin +10 -print0 | xargs -0 rmdir