Cómo eliminar el registro de archivos con nombre de archivo

Cómo eliminar el registro de archivos con nombre de archivo

Supongamos que tengo archivos de registro con este formato de nombre.

NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30
NameLog.log.2014-10-01
NameLog.log.2014-10-02
NameLog.log.2014-10-03
NameLog.log.2014-10-04

Quiero eliminar solo el archivo de registro

NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30

En realidad, quiero que el registro de archivos conserve solo 30 archivos. ¿Cómo solucionar esto con un bashscript?

Respuesta1

La forma más sencilla de lograr lo que desea es eliminar todos los archivos del directorio que tengan más de 30 días. Puedes usar este findcomando:

find /path/to/log/ -maxdepth 1 -name "NameLog.log*" -mtime +30 -delete

Explicación:(ver:explicar shell)

  • -maxdepth 1: no profundices en la estructura de carpetas
  • -name "NameLog.log*": se aplica solo al archivo de registro con ese nombre
  • -mtime +30: que tienen un tiempo de modificación mayor a 30 días
  • -delete: borra los

información relacionada