找不到通过bash脚本删除文件夹中的文件

我是bash脚本的新手,我真的坚持使用Ubuntu的find方法。 我想在文件夹/opt/搜索所有文件夹,看看它们是否比特定日期更早。 如果它们较旧,则应删除此文件夹中的文件(实际上文件夹本身也是如此)。 如果日期仍然太新,则不应触摸文件。

我在代码中有什么:

 find $BACKUP_DIR -maxdepth 1 -mtime +$DAYS_TO_KEEP -name "*$mystring" -exec rm -rf '{}' ';' 

变量包含以下值:

 BACKUP_DIR=/opt/ TESTDIR=2014-11-25-daily_testmachine mystring=-daily_testmachine 

如果变量$DAYS_TO_KEEP为2,则日期为2014-11-25,文件夹名称为2014-11-20-daily_testmachine ,文件夹及其内容应删除。

我发现错误的是找不到删除/找到要删除的文件和文件夹? 我似乎无法找到错误。

注意:如果我执行命令中包含文件夹的确切字符串名称,则该文件夹将被删除。 所以我的格式或命名有问题。

 find $BACKUP_DIR -maxdepth 1 -name "2014-11-20-daily_testmachine" -exec rm -rf '{}' ';' 

为了使事情更清楚,我制作了一个屏幕截图来显示设置:

我的错误是-mtime的逻辑错误。 我以为我的脚本正在检查名称,但-mtime检查文件创建的日期。 所以我的最终代码:

 DAYS_TO_KEEP=2 find $BACKUP_DIR -maxdepth 1 -mtime +"$DAYS_TO_KEEP" -exec rm -rf {} \; 

我只需要做一个sudo touch -d "3 days ago" /filepath/folderToRemove-mname找到该文件夹并确保文件足够大,可以删除。 因此,此最终代码将删除比我的变量$DAYS_TO_KEEP更旧的所有文件夹