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 -regex
parâ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 -mtime
nã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:
-delete
não é portátil. Em geral, as implementações defind
podem ou não apoiá-lo. O equivalente portátil é-exec rm {} \;
.-name
usa 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