【问题标题】:Folder/subfolder size then deletion文件夹/子文件夹大小然后删除
【发布时间】:2013-11-23 11:02:46
【问题描述】:

我是 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

【问题讨论】:

    标签: linux shell directory size delete-file


    【解决方案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
    

    【讨论】:

    • 感谢脚本:如果大小低于限制会怎样?不需要“else”和“exit”?感谢您的回答。
    • 在我们现在拥有的脚本中,if 块之后没有代码。所以脚本无论如何都会终止。但是如果你要写更多的代码,那么你可能想要添加一些“else”或显式的“exit”。
    猜你喜欢
    • 1970-01-01
    • 2014-02-10
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多