使用Shell删除超过X天的所有文件夹

时间:2013-09-05 12:38:48

标签: linux shell cron

我的备份存储在文件夹中。例如

 **05092013** > 
 - File1.sql
 - File2.sql
 - File1.tar
 - File2.tar

等等。

现在我要删除所有超过X天的文件夹。

我试过这个

find $FILEDIR -mtime +14 -exec rm {} \;

但它只删除所有文件而不删除文件夹。如何删除较旧的所有文件和文件夹?

有人可以帮助我吗?

提前thc cSGermany

2 个答案:

答案 0 :(得分:4)

使用-r

find "$FILEDIR" -mtime +14 -exec rm -ir {} \;

如果您知道自己在做什么,请将-ir更改为-r

或使用-delete

find "$FILEDIR" -mtime +14 -delete

但请,请确保您知道自己在做什么。

您也可以添加这样的支票,以确保$ FILEDIR始终位于您主目录的某个位置:

[[ $FILEDIR == /home/abc/* ]] && find "$FILEDIR" -mtime +14 -delete

答案 1 :(得分:1)

  • 要查找目录,您可以添加find $FILEDIR -type d ...,以避免错误地删除文件(例如您指定的根目录下的文件)。
  • 要删除非空目录,您需要rm -r,因此此处-r选项非常重要。