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

通过 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 没有删除/找到要删除的文件和文件夹?我似乎找不到错误。

笔记:如果我使用文件夹的准确字符串名称执行命令,该文件夹将被删除。所以我的格式或命名有问题。

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

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

答案1

我的错误是 的逻辑错误-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

相关内容