如何在crontab中使用perl删除超过一天的目录内容

如何在crontab中使用perl删除超过一天的目录内容

正如标题所述,我试图删除包含许多文件的目录中超过一天的文件(实际上并没有删除该目录) - 该目录由远程 rsnapshot 服务器备份,因此一旦备份了源文件,我就不再需要它们了,问题是

find /directory/* -mtime +1 -delete

给出错误'参数列表太长' 因为有那么多文件(它们甚至没有那么大,只是来自与运动软件配合使用的安全摄像机的大量图片和小视频 - 顺便说一句,这很棒;)

我偶然发现了可以与 crontab 一起使用的这个命令:

perl -e 'for(<~/test1/*>){((stat)[9]<(unlink))}'

但我真的不明白这个命令,因为我认为它是某种循环。它确实在我创建的测试目录(显然是 test1)上工作,其中包含一堆测试文件,这些文件都是更年轻比一天更早,我不认为‘比……更早’的论点存在在这里。

我该怎么做?如果我的问题不清楚,请随意修改。

答案1

find是递归的。你不需要做find /directory/*,只需使用:

find /directory/ -mtime +1 -delete

答案2

如果find /directory/* -mtime +1 -delete 确实生成了正确的文件但是列表太长,那么该怎么办:

查找/目录/* -mtime +1 | 读取 fName 时;执行 rm $fName;完成

或者先将输出写入文件,然后处理文件。条条大路通罗马……:)

相关内容