Estou tentando criar algum script de backup, à medida que os arquivos de log ficam cada vez maiores. O que tenho é lidar com o arquivo atual (por exemplo, secure
arquivo in /var/log/
) e remover o conteúdo desse arquivo. Mas existem alguns arquivos com o nome como: secure.1
, secure.2
e tudo isso eu gosto de contá-los, e se o número for maior, então 2
para arquivar todos eles. Não consigo encontrar o método para encontrar esses arquivos ou contá-los. O primeiro pensamento que me ocorreu foi:
find /var/log/ -name *.1 | wc -l
e isso sempre será impresso, 1
pois há um arquivo secure.1
. Como posso contar como no loop for, onde posso especificar um intervalo de números como {1..5}
ou similar. Existe uma maneira de separar esses arquivos e torná-los como um e eles backup ou excluir ou o que quer que seja ... ou antes de tudo como posso encontrar todos esses números que acaba com número.
find /var/log/ -name '*.1' ...
logrotate
seu propósito.Respostas:
Com simples
-name
:ou para qualquer dígito:
ou se outros caracteres forem possíveis após o dígito:
fonte
Para encontrar os nomes de arquivos que terminam com um número varia de
.
[1 a 5].fonte
Por que não apenas ...
Você não precisa
find
, tanto quanto eu posso dizer - o shell usa os mesmos globs que ele usa-name
. E se todos os arquivos estiverem em um único diretório ... É claro que, se houver subdiretórios nos quais você também esteja interessado,find
pode ser benéfico - andar em árvores no shell pode ser uma dor de cabeça.fonte