首页 > 解决方案 > 删除具有给定文件夹名称的目录

问题描述

我正在尝试编写一个将在 Raspberry Pi 上运行的 cron 作业,并且每隔几天或每两周运行一次并删除一些文件夹,这些文件夹是特定于日期的,并且是自动生成的,例如:

2020-02-08
2020-02-09
2020-02-10
2020-02-11
2020-02-12
2020-02-13
2020-02-14
2020-02-15
2020-02-16

我希望能够遍历这些,并删除过去 X 天的文件夹,同时保留过去 Z 天的文件夹,例如:

删除:

2020-02-08
2020-02-09
2020-02-10
2020-02-11

保持:

2020-02-12
2020-02-13
2020-02-14
2020-02-15
2020-02-16

然后在 4 - 5 天后它会再次运行,删除前一周保留的那些,等等第四次。

我知道我可以运行rm -rf 2020-*以删除所有以它开头的文件夹/文件,但我需要一个脚本来为我执行上述操作!

此外,在每个文件夹中都会有数千个文件,这是执行良好的 ant 删除过程要记住的事情

标签: linuxshell

解决方案


在父目录中执行此命令:

find  . -mtime +5 -type d -name 2020-\* -exec rm  -rf {} \;

上面的命令将查找所有超过 5 天且名称与 2020-* 匹配的目录(您可能需要考虑使其更具未来性,并可能使用 2* )。所有具有该名称(和修改时间)的目录都将被删除。

您可能希望推迟该命令的 -exec 部分。先试试这个命令:

find  . -mtime +5 -type d -name 2\* 

这将使您知道找到的目录是您要删除的目录,然后再继续删除它们。


推荐阅读