如果测试 - 检查超过7天的文件 - Unix

时间:2015-04-18 13:49:16

标签: linux unix linux-kernel synology

我已经为我的Synology NAS创建了一个脚本,该脚本会检查视频文件夹以查看是否有超过七天的文件。但是它没有删除,我得到的错误消息是

sh: of: unknown operand

这是我的剧本:

echo "------- SCRIPT START -------"
sleep 2

if test 'find /volume1/Media/ -mtime +7'
        then
                sleep 2
                echo "Deleting files"
                -exec rm -r {} \;
                sleep 2
                echo "Deleted files"
        else
                echo "There are no files to delete"
fi

3 个答案:

答案 0 :(得分:2)

一个简短的脚本,只删除超过7天的文件:

dir="/volume1/Media"
days=7
echo -n "removing files in $dir that are older than $days days: "
find "$dir" -mtime +$days -type f -exec echo {} \; -exec rm {} \; | wc -l

答案 1 :(得分:1)

您可以将代码重写为

find /volume1/Media/ -mtime +7 -type f -exec echo rm -f {} \; 

echo用于测试,当您喜欢生成的rm命令时将其删除。

如果您还想删除目录,可以将其更改为

find /volume1/Media/ -mtime +7 -exec echo rm -rf {} \; 

答案 2 :(得分:0)

你绝对不需要-exec而{}正在取代你究竟不需要的东西;你可能应该cd到你真正想要删除文件的目录,因为否则看起来你要检查是否有文件,然后删除pwd中的everthing。这可能不太理想,具体取决于此脚本的运行位置。

所以只需将测试文件放在该文件夹中并执行此操作,然后将rm -r *更改为仅删除要删除的文件,具体取决于您实际要执行的操作。

echo "------- SCRIPT START -------"
sleep 2

echo "Checking Game of Thrones"
sleep 2
if test 'find /volume1/Media/ -mtime +7'
    then
            sleep 2
            echo "Deleting files"
            cd /volume1/Media
            rm -r *
            sleep 2
            echo "Deleted files"
            cd
    else
            echo "There are no files to delete"
fi