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

If test - checking files older than 7 days - Unix

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

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

您绝对不需要 -exec 并且 {} 正在替换您不需要的内容;并且您可能应该 cd 到您实际要删除文件的目录,否则看起来您将要检查是否有文件,然后删除 pwd 中的所有内容。这可能并不理想,具体取决于此脚本所在的位置 运行。

因此,只需将一个测试文件放入该文件夹并执行此操作,然后更改 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

仅删除超过 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

您可以将代码重写为

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

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

当你也想删除目录时,可以改成

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