como excluir todos os arquivos antigos, então X dias e terminados com número/s

como excluir todos os arquivos antigos, então X dias e terminados com número/s

queremos excluir todos os arquivos que terminam com um número com dígito ou mais como 2 dígitos ou três dígitos e assim por diante

nota - quando os arquivos terminam com número, informa-nos que este arquivo foi girado e realmente feito backup com número uniq

exemplo

-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 esperados:

-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

Eu tento esta opção, mas esta opção não funciona

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

por favor me ajude a construir a sintaxe correta,

Responder1

Você precisa usar o -regexparâmetro para find.

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

Isso irá combinar e excluir todos os arquivos que terminam em números (cuidado, pois algumas extensões também podem terminar em números, por exemplo .mp4).

Observe também que -mtimenão suporta números de ponto flutuante e sempre arredonda para o dia seguinte. Portanto, se você deseja excluir arquivos que foram modificados há pelo menos seis dias, você fornece o arquivo -mtime +5.

Responder2

Por favor, ajude-me a construir a sintaxe correta.

O que você usou:

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

éa sintaxe correta, com algumas ressalvas:

  1. -deletenão é portátil. Em geral, as implementações de findpodem ou não apoiá-lo. O equivalente portátil é-exec rm {} \;.

  2. -nameusa padrões semelhantes a globos. Dependendo da sua localidade, [0-9]podeou não podesignifica exatamente o que você deseja: pode corresponder a um caractere de um conjunto diferente de apenas dígitos decimais ASCII (por exemplo, pode corresponder

informação relacionada