linux - 删除具有给定文件夹名称的目录
问题描述
我正在尝试编写一个将在 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 删除过程要记住的事情
解决方案
在父目录中执行此命令:
find . -mtime +5 -type d -name 2020-\* -exec rm -rf {} \;
上面的命令将查找所有超过 5 天且名称与 2020-* 匹配的目录(您可能需要考虑使其更具未来性,并可能使用 2* )。所有具有该名称(和修改时间)的目录都将被删除。
您可能希望推迟该命令的 -exec 部分。先试试这个命令:
find . -mtime +5 -type d -name 2\*
这将使您知道找到的目录是您要删除的目录,然后再继续删除它们。
推荐阅读
- php - 拆分表情符号字符串
- java - 在 Java 中声明一个 SQL 变量
- amazon-web-services - AWS MediaConvert - 将元数据添加到 s3 输出
- java - 休眠 5.4.10.Final。故障安全清理(集合)。无限循环或类似的东西
- xamarin - 如何使用此方法获得正确按钮的正确值?
- oracle - 用于维护 Oracle 表子分区的自动化脚本
- azure-active-directory - 当任何人都可以通过发现点看到signkey时,openidconnect有多安全?
- python - selenium 无法单击 instagram 站点中的特定按钮
- android - Retrofit2+Kotlin 如何在获取响应作为数据类时查看原始 json
- php - 降级 PHP 7.4.2。至 7.1.3、7.2.0、7.3.0