Comando CronJob para eliminar varios subdirectorios por nombre en un directorio determinado

Comando CronJob para eliminar varios subdirectorios por nombre en un directorio determinado

Tengo dos cámaras IP que envían instantáneas de imágenes a un servidor FTP cada 10 segundos, de 08:00 a 20:59. La estructura del directorio se ve así:

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

Sólo me interesa conservar una copia de las instantáneas tomadas entre:

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

Por eso me gustaría crear unCronJobque eliminará periódicamente todos los directorios denominados "10", "11", "12", "15", "16", "17" y "18".

Soy un novato en los comandos de UNIX y busqué mucho. Logré crear 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. ¿Pero es ese el camino correcto a seguir?

Respuesta1

Tu mando me parece bien. Pero podrías acortarlo un poco:

  • -depthse puede quitar
  • \( -name ... -or -name ... \)se puede acortar
  • en lugar de {} \;you podría usar {} +lo que resultaría en una sola invocación derm

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

Si sus cámaras se pueden configurar para almacenar imágenes entre las 08:00 y las 20:59, tal vez también se puedan configurar para almacenar imágenes solo entre las 08:00 y las 09:59, las 13:00 y las 14:59 y las 19:00 y las 20:00. :59?

Creo que no existe una "forma correcta" de hacer esto. Si un trabajo cron te funciona, ¿por qué no?

información relacionada