是否可以编写一个脚本,在五天后删除特定文件夹中的文件而不删除该文件夹。
我正在使用没有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 天。