0

下面的脚本将从 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语句所在的位置)

问题

  • 没有任何内容被删除
4

1 回答 1

2

你可以使用这样的东西:

find $homeDirData -type d -mmin +10 -print0 | xargs -0 rmdir
于 2013-06-19T06:24:55.117 回答