5天后删除文件的脚本

5天后删除文件的脚本

是否可以编写一个脚本,在五天后删除特定文件夹中的文件而不删除该文件夹。

我正在使用没有gui界面的 Ubuntu server 12。

答案1

要查找五天前最后修改的文件:

find /path/to/directory -type f -mtime +4

要同时删除它们(首先测试一下):

find /path/to/directory -type f -mtime +4 -delete

为了自动化以便您每天运行它,请运行crontab -e(以您希望运行此任务的用户身份)并添加:

@daily find /path/to/directory -type f -mtime +4 -delete

一个实验来显示mtime您想要使用哪个值。手册很垃圾。我曾假设+5这是我们想要的,但一条评论不同意。文档似乎有冲突,所以我开始创建三个文件,每个文件相隔 1 天:

$ mkdir test
$ touch test/now
$ touch -d "1 day ago" test/yesterday
$ touch -d "2 days ago" test/day-before-yesterday
$ ls -l test
total 0
-rw-r--r-- 1 oli oli 0 Nov 26 13:12 day-before-yesterday
-rw-r--r-- 1 oli oli 0 Nov 28 13:11 now
-rw-r--r-- 1 oli oli 0 Nov 27 13:12 yesterday

如果我们想要确切的时间在 24 到 48 小时之间的某个值,我们就使用不带符号的 1。

$ find test -mtime 1
test/yesterday

但如果我们想要 24 小时以上,+1则不行:

$ find test -mtime +1
test/day-before-yesterday

+1似乎意味着“比所1显示的更多”......所以+0用法是:

$ find test -mtime +0
test/day-before-yesterday
test/yesterday

如果你像我一样习惯于正确,那么这一切都会很烦人……但我肯定会恢复过来。感谢 Adaephon 的提醒。

答案2

是的,你可以使用 cron 任务,假设你需要在五天后删除 /tmp/test/ 目录中的文件,那么

crontab -e

现在将这些行添加到最后

@weekly rm -fr /tmp/test/

现在该文件夹将每周删除一次。如需更多信息,请点击这里

答案3

你需要的是类似

@weekly find /tmp/test -type f -exec rm '{}' +

注意:rm -rf 也可以删除文件夹。您可以添加 -mtime 来获取修改时间。

一定要正好是五天吗?请输入您最喜欢的日子或时间:

分钟 - 小时 - 日 - 月 - 星期

0 3 0,5,10,15,20,25 * *

这意味着每五天的凌晨 3 点,除非月份是 31 天。

相关内容