1

我是 Linux 世界的新手:请接受我对这个问题的道歉:

我编写了一个脚本来检查文件夹及其所有子文件夹的大小,如果大小大于 X 字节,则将删除 X 天前修改过的文件。

出于测试目的,我已将文件夹大小设置为零,因此,脚本应该执行删除过程,但它没有。

该脚本确实符合我的预期,但我不知道为什么。

谢谢你的帮助。
脚本是:

#!/bin/sh

# 100GB SIZE LIMIT
SIZE="0"

# check the current size
CHECK="`du /media/nssvolumes/TEST/MB/`"

if ["$CHECK" -gt "$SIZE"]; then echo "$ACTION"
ACTION="`find /media/nssvolumes/TEST/MB/ -mindepth 0 -maxdepth 3 -mtime +1 -type f  -exec rm -f {} \;`"
else exit
fi
4

1 回答 1

1

好吧,这里我们有一堆错误。假设您的操作系统是 Linux,请尝试du从命令行运行以了解它返回的内容,因为它不是数字。

  • 第二个问题 - 使用[]需要空格。
  • 此外,整数不需要""
  • 您在定义其值之前打印 $ACTION 。
  • 如果脚本没有更多代码要执行,则不需要调用 exit

所以固定的脚本是:

#!/bin/sh

# 100GB SIZE LIMIT
SIZE=0
MY_DIR="/media/nssvolumes/TEST/MB/"

# check the current size
CHECK=$(du -bs $MY_DIR|awk '{print $1}')

if [ $CHECK -gt $SIZE ]; then
    echo "ACTION"
    find $MY_DIR -mindepth 0 -maxdepth 3 -mtime +1 -type f -exec rm {} \;    
fi
于 2013-11-11T16:22:09.830 回答