
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 bash
script?
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 find
comando:
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