CronJob 命令按名称删除给定目录中的多个子目录

CronJob 命令按名称删除给定目录中的多个子目录

我有两个 IP 摄像机,从 08:00 到 20:59,每 10 秒将图像快照发送到 FTP 服务器。目录结构如下所示:

`-- public_html
    `-- securitycams
        |-- cam01
        |   |-- 20190601
        |   |   |-- 08
        |   |   |   |-- 20190601_080000.jpg
        |   |   |   |-- 20190601_080010.jpg
        |   |   |   |-- 20190601_080020.jpg
        |   |   |   `-- ...
        |   |   |-- 09
        |   |   |   |-- 20190601_090000.jpg
        |   |   |   |-- 20190601_090010.jpg
        |   |   |   |-- 20190601_090020.jpg
        |   |   |   `-- ...
        |   |   |-- 10
        |   |   |-- 11
        |   |   |-- 12
        |   |   |-- 13
        |   |   |-- 14
        |   |   |-- 15
        |   |   |-- 16
        |   |   |-- 17
        |   |   |-- 18
        |   |   |-- 19
        |   |   `-- 20
        |   `-- 20190602
        |       |-- 08
        |       |   |-- 20190602_080000.jpg
        |       |   |-- 20190602_080010.jpg
        |       |   |-- 20190602_080020.jpg
        |       |   `-- ...
        |       |-- 09
        |       |   |-- 20190602_090000.jpg
        |       |   |-- 20190602_090010.jpg
        |       |   |-- 20190602_090020.jpg
        |       |   `-- ...
        |       |-- 10
        |       |-- 11
        |       |-- 12
        |       |-- 13
        |       |-- 14
        |       |-- 15
        |       |-- 16
        |       |-- 17
        |       |-- 18
        |       |-- 19
        |       `-- 20
        `-- cam02
        |   |-- 20190601
        |   |   |-- 08
        |   |   |   |-- 20190601_080000.jpg
        |   |   |   |-- 20190601_080010.jpg
        |   |   |   |-- 20190601_080020.jpg
        |   |   |   `-- ...
        |   |   |-- 09
        |   |   |   |-- 20190601_090000.jpg
        |   |   |   |-- 20190601_090010.jpg
        |   |   |   |-- 20190601_090020.jpg
        |   |   |   `-- ...
        |   |   |-- 10
        |   |   |-- 11
        |   |   |-- 12
        |   |   |-- 13
        |   |   |-- 14
        |   |   |-- 15
        |   |   |-- 16
        |   |   |-- 17
        |   |   |-- 18
        |   |   |-- 19
        |   |   `-- 20
        |   `-- 20190602
        |       |-- 08
        |       |   |-- 20190602_080000.jpg
        |       |   |-- 20190602_080010.jpg
        |       |   |-- 20190602_080020.jpg
        |       |   `-- ...
        |       |-- 09
        |       |   |-- 20190602_090000.jpg
        |       |   |-- 20190602_090010.jpg
        |       |   |-- 20190602_090020.jpg
        |       |   `-- ...
        |       |-- 10
        |       |-- 11
        |       |-- 12
        |       |-- 13
        |       |-- 14
        |       |-- 15
        |       |-- 16
        |       |-- 17
        |       |-- 18
        |       |-- 19
        |       `-- 20

我只对保留以下时间之间拍摄的快照的副本感兴趣:

08:00 and 09:59
13:00 and 14:59
19:00 and 20:59.

因此我想创建一个定时作业这将定期删除名为“10”、“11”、“12”、“15”、“16”、“17”和“18”的所有目录。

我是 UNIX 命令的新手,并且搜索了很多。我设法创建了这个命令:

find /home/******/public_html/securitycams/* -depth \( -name "10" -or -name "11" -or -name "12" -or -name "15" -or -name "16" -or -name "17" -or -name "18" \) -type d -exec rm -r "{}" \;

似乎有效。但这是正确的方法吗?

答案1

你的命令对我来说看起来不错。但你可以缩短一点:

  • -depth可以删除
  • \( -name ... -or -name ... \)可以缩短
  • 而不是{} \;你可以使用{} +导致只调用一次rm

find /home/******/public_html/securitycams -type d -name "1[0-25-8]" -exec rm -r {} +

如果您的摄像机可以配置为存储 08:00 到 20:59 之间的图像,也许它们也可以配置为仅存储 08:00 到 09:59、13:00 到 14:59 以及 19:00 到 20 之间的图像:59?

我认为没有“正确的方法”来做到这一点。如果 cron 作业适合你,为什么不呢?

相关内容