cómo eliminar todos los archivos que tienen más de X días y terminan con número/s

cómo eliminar todos los archivos que tienen más de X días y terminan con número/s

queremos eliminar todos los archivos que terminen con un número con dígito o más como 2 dígitos o tres dígitos y así sucesivamente

nota: cuando los archivos terminan con un número, nos indica que este archivo se rotó y en realidad se realizó una copia de seguridad con un número único

ejemplo

-rw-r--r--  1 kafka hadoop    73668 Aug  5 07:56 controller.log.2018-08-05-07
-rw-r--r--  1 kafka hadoop    73668 Aug  5 08:56 controller.log.2018-08-05-08
-rw-r--r--  1 kafka hadoop   658893 Aug  7 11:53 controller.log.3
-rw-r--r--  1 kafka hadoop     1092 Aug  7 14:35 controller.log.2
-rw-r--r--  1 kafka hadoop  2750003 Aug  7 14:52 state-change.log.2018-08-07-14
-rw-r--r--  1 kafka hadoop     3678 Aug  7 14:52 log-cleaner.log.2018-08-07-14
-rw-r--r--  1 kafka hadoop   199094 Aug  7 14:52 controller.log.2018-08-07-14
-rw-r--r--. 1 kafka hadoop    24431 Aug  7 15:07 kafka.err
-rw-r--r--  1 kafka hadoop     1147 Aug  7 16:02 server.log.10
-rw-r--r--  1 kafka hadoop     1061 Aug  7 16:02 server.log.9
-rw-r--r--  1 kafka hadoop   135465 Aug  7 16:07 server.log.8
-rw-r--r--  1 kafka hadoop    10278 Aug  7 16:07 server.log.7
-rw-r--r--  1 kafka hadoop    10350 Aug  7 16:07 server.log.6
-rw-r--r--  1 kafka hadoop    10353 Aug  7 16:07 server.log.5
-rw-r--r--  1 kafka hadoop    10322 Aug  7 16:07 server.log.4
-rw-r--r--  1 kafka hadoop     1272 Aug  7 16:07 log-cleaner.log
-rw-r--r--  1 kafka hadoop   473322 Aug  7 16:07 controller.log.1
-rw-r--r--  1 kafka hadoop      170 Aug  7 16:07 controller.log

Resultados previstos:

-rw-r--r--. 1 kafka hadoop    24431 Aug  7 15:07 kafka.err
-rw-r--r--  1 kafka hadoop     1272 Aug  7 16:07 log-cleaner.log
-rw-r--r--  1 kafka hadoop      170 Aug  7 16:07 controller.log

Intenté esta opción pero esta opción no funciona.

 find . -type f  -mtime +6   -name '*[0-9]'  -print -delete

por favor ayúdame a construir la sintaxis correcta,

Respuesta1

Necesitas usar el -regexparámetro para find.

find . -type f  -mtime +6 -regex '^.*[0-9]$' -print -delete

Esto hará coincidir y eliminará todos los archivos que terminen en números (tenga en cuenta que algunas extensiones también pueden terminar en números, por ejemplo .mp4).

También tenga en cuenta que -mtimeno admite números de coma flotante y siempre redondea al día siguiente. Entonces, si desea eliminar archivos que se modificaron hace al menos seis días, proporcione -mtime +5.

Respuesta2

Ayúdenme a crear la sintaxis correcta.

Lo que usaste:

find . -type f  -mtime +6   -name '*[0-9]'  -print -delete

esla sintaxis correcta, con algunas advertencias:

  1. -deleteno es portátil. En general, las implementaciones de findpueden admitirlo o no. El equivalente portátil es-exec rm {} \;.

  2. -nameutiliza patrones tipo globo. Dependiendo de su localidad, [0-9]puedeo no puedesignifica exactamente lo que desea: puede coincidir con un carácter de un conjunto diferente a solo dígitos decimales ASCII (por ejemplo, puede coincidir

información relacionada