5 天后删除文件的脚本

Ven*_*ura 5 server scripts

是否可以制作一个脚本来删除特定文件夹中的文件,五天后不删除文件夹。

我正在使用没有gui界面的Ubuntu 服务器 12 。

Oli*_*Oli 11

要查找上次修改超过五天的文件:

find /path/to/directory -type f -mtime +4
Run Code Online (Sandbox Code Playgroud)

同时删除它们(首先测试上面的内容):

find /path/to/directory -type f -mtime +4 -delete
Run Code Online (Sandbox Code Playgroud)

要使其自动化以便您每天都运行它,请运行crontab -e(作为您希望运行此任务的用户)并添加:

@daily find /path/to/directory -type f -mtime +4 -delete
Run Code Online (Sandbox Code Playgroud)

一个实验来显示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
Run Code Online (Sandbox Code Playgroud)

如果我们想要的东西正好在 24-48 小时之间,我们使用 1 而不带符号。

$ find test -mtime 1
test/yesterday
Run Code Online (Sandbox Code Playgroud)

但是,如果我们想要 24 小时 + 的事情,+1则行不通:

$ find test -mtime +1
test/day-before-yesterday
Run Code Online (Sandbox Code Playgroud)

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

$ find test -mtime +0
test/day-before-yesterday
test/yesterday
Run Code Online (Sandbox Code Playgroud)

如果你像我一样习惯正确的话,一切都会很烦人......但我会恢复的,我敢肯定。感谢 Adaephon 的戳戳。


小智 1

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

crontab -e
Run Code Online (Sandbox Code Playgroud)

现在将这些行添加到最后

@weekly rm -fr /tmp/test/
Run Code Online (Sandbox Code Playgroud)

现在该文件夹将每周删除一次。欲了解更多信息请点击这里