0

我为我的 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
4

3 回答 3

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
于 2015-04-18T14:44:21.580 回答
1

您可以将代码重写为

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

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

当您还想删除目录时,可以将其更改为

find /volume1/Media/ -mtime +7 -exec echo rm -rf {} \; 
于 2015-04-18T14:45:27.303 回答
0

您绝对不需要 -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
于 2015-04-18T14:04:10.937 回答