Encontre arquivos que terminam com número

Encontre arquivos que terminam com número

Estou tentando criar um script de backup à medida que os arquivos de log ficam cada vez maiores. O que eu tenho é copiar o arquivo atual (por exemplo, securearquivo em /var/log/) e remover o conteúdo desse arquivo. Mas existem alguns arquivos com nomes como: secure.1, secure.2e tudo isso gosto de contá-los, e se o número for maior então 2arquivar todos. Não consigo encontrar o método para encontrar esses arquivos ou contá-los. A primeira coisa que me veio à cabeça foi:

find /var/log/ -name *.1 | wc -l

e isso sempre será impresso, 1pois há um arquivo secure.1. Como posso contar como no loop for, onde posso especificar um intervalo de números semelhantes {1..5}ou semelhantes. Existe uma maneira de separar esses arquivos e torná-los um só e fazer backup ou excluí-los ou o que quer que seja ... ou antes de tudo, como posso encontrar todos esses números que terminam com número.

Responder1

Com simples -name:

find /var/log -name '*.[2-9]'

ou para qualquer dígito:

find /var/log -name '*.[[:digit:]]'

ou se outros caracteres forem possíveis após o dígito:

find /var/log -name '*.[2-9]*'

Responder2

Para encontrar os nomes de arquivos que terminam com um número varia de .[1 a 5].

find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"

Responder3

Por que não apenas...

for log in /var/log/*.[1-5]
do whatever to "$log"
done

findPelo que eu sei, você não precisa - o shell usa os mesmos globos que usa no -name. E se todos os arquivos estiverem em um único diretório... Claro, se houver subdiretórios nos quais você também esteja interessado, isso findpode ser benéfico - andar em árvores dentro da casca pode ser uma dor de cabeça.

informação relacionada