我想知道我应该在Cron中插入什么作业,以便删除超过30分钟的每个文件夹。
我试过了:
# 30 * * * * find /path/to/my/folder -type f -mmin +30 -exec rm -fr -maxdepth 0 {} \;
但它似乎没有做任何事情。
Stackoverflow上还有其他帖子,但他们都谈到删除文件,这很酷但我也想删除文件夹本身及其内容。
答案 0 :(得分:0)
tmpwatch
(大多数RedHat发行版)包都可以。
说明 tmpwatch以递归方式删除在给定时间内未访问过的文件。通常,它用于清理用于的目录 临时持有空间,例如/ tmp。
tmpwatch -umc 30m --nodirs notThisDir /path/to/directory/ThatIwantToClean
man tmpwatch
中的更多信息。此程序包在cron
中提供了/etc/cron.daily/tmpwatch
示例。您可以修改脚本以满足您的需要,并将cron放在/etc/cron.hourly/
中。如下所示:
$ cat /usr/local/bin/cleanfolder
#!/bin/bash
flags="-umcvv"
/usr/sbin/tmpwatch "${flags}" 30m /my/folder
更改权限:
$ chmod a+x /usr/local/bin/cleanfolder
在/etc/cron.d/cleanfolder-cron
中,按照这样说:
30 * * * * root /usr/local/bin/cleanfolder
重新加载cron
服务。
答案 1 :(得分:0)
我假设您考虑目录。然后将 -type f 选项更改为 -type d
答案 2 :(得分:0)
我实际上发现最好的方法是将Cron中的命令分成两部分,并使用Rcpp::as<arma::vec>
参数
代码
Rcpp::as<double>
说明
-delete
:始终每30分钟执行一次
30 * * * * sudo find /my/folder/* -type f -mmin +30 -delete && sudo find /my/folder/* -type d -empty -mmin +30 -delete
:删除超过45分钟的所有文件和子文件
30 * * * *
:仅在第一个命令成功运行时执行
sudo find /my/folder/* -type f -mmin +45 -delete
:删除所有超过45分钟的空文件夹
使用Ubuntu 16.04
答案 3 :(得分:-1)
从手册页 ... 找 。 -type d -empty -delete - 删除所有空目录。 rm - 删除文件(rm -rf会以递归方式删除文件夹及其内容)。
......应该这样做。