指定されたディレクトリ内の複数のサブディレクトリを名前で削除する CronJob コマンド

指定されたディレクトリ内の複数のサブディレクトリを名前で削除する CronJob コマンド

私には 2 台の 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 ... \)短縮できる
  • の代わりに{} \;を使用すると{} +、 の呼び出しは 1 回だけになります。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 ジョブが機能するのであれば、なぜそうしないのでしょうか?

関連情報