删除具有给定文件夹名称的目录

时间:2020-02-16 21:20:16

标签: linux shell

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

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-*来删除所有以此开头的文件夹/文件,但是我需要一个脚本来为我完成以上操作!

此外,在每个文件夹中将有成千上万个文件,这是一个执行良好的蚂蚁删除过程要牢记的事情

1 个答案:

答案 0 :(得分:2)

在父目录中执行以下命令:

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

上面的命令将查找所有已存在5天以上且名称与2020- *相匹配的目录(您可能希望考虑将其用作将来的证明,也许还要加上2 *)。具有该名称(和修改时间)的所有目录将被删除。

您可能要推迟执行该命令的-exec部分。请先尝试以下命令:

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

这将让您知道找到的目录是您要删除的目录,然后再将其删除。