Comando CronJob para excluir vários subdiretórios por nome em um determinado diretório

Comando CronJob para excluir vários subdiretórios por nome em um determinado diretório

Tenho duas câmeras IP que enviam instantâneos de imagens para um servidor FTP a cada 10 segundos, das 8h às 20h59. A estrutura de diretórios é semelhante a esta:

`-- 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

Estou interessado apenas em manter uma cópia dos instantâneos tirados entre:

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

Por isso, gostaria de criar umCronJobisso excluirá periodicamente todos os diretórios denominados "10", "11", "12", "15", "16", "17" e "18".

Sou novato em comandos UNIX e pesquisei bastante. Consegui criar este comando:

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 "{}" \;

Parece funcionar. Mas esse é o caminho correto a seguir?

Responder1

Seu comando parece bom para mim. Mas você pode encurtar um pouco:

  • -depthpode ser removido
  • \( -name ... -or -name ... \)pode ser encurtado
  • em vez de {} \;você poderia usar {} +resultando em apenas uma invocação derm

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

Se suas câmeras podem ser configuradas para armazenar imagens entre 8h e 20h59, talvez elas também possam ser configuradas para armazenar imagens apenas entre 8h e 9h59, 13h e 14h59 e 19h e 20h. :59?

Acho que não existe uma "maneira correta" de fazer isso. Se um cron job funciona para você, por que não?

informação relacionada