使用Cron删除超过30分钟的文件夹

时间:2018-01-19 20:09:26

标签: shell ubuntu cron

我想知道我应该在Cron中插入什么作业,以便删除超过30分钟的每个文件夹

我试过了:

# 30 * * * * find /path/to/my/folder -type f -mmin +30 -exec rm -fr -maxdepth 0 {} \;

但它似乎没有做任何事情。

Stackoverflow上还有其他帖子,但他们都谈到删除文件,这很酷但我也想删除文件夹本身及其内容。

4 个答案:

答案 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会以递归方式删除文件夹及其内容)。

......应该这样做。