Remoção de arquivos após x arquivos no diretório [RESOLVIDO]

1. Remoção de arquivos após x arquivos no diretório [RESOLVIDO]

Adriano Barbosa de Souza
adrianokahn

(usa Ubuntu)

Enviado em 21/09/2021 - 08:44h

Olá.
Qual maneira de criar um script em que um diretório que receba arquivos de backup, remova os mais antigos. Só que os mais antigos não seriam contados por X dias e sim por X arquivos. Hoje utilizo um código que remove os arquivos após o 5º dia, mantendo os últimos 5, mas o que quero é manter os últimos 5 arquivos, independente se já tem 1 ou 10 dias que o backup não é feito.


Obrigado e sucesso.


  


2. MELHOR RESPOSTA

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 21/09/2021 - 15:36h


(Não testado) Algo mais ou menos isso
ls -tr | tail -5 | xargs rm

3. Re: Remoção de arquivos após x arquivos no diretório

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 21/09/2021 - 17:56h

adrianokahn escreveu:

Olá.
Qual maneira de criar um script em que um diretório que receba arquivos de backup, remova os mais antigos.
Só que os mais antigos não seriam contados por X dias e sim por X arquivos.
Hoje utilizo um código que remove os arquivos após o 5º dia, mantendo os últimos 5, mas o que quero é manter os últimos 5 arquivos, independente se já tem 1 ou 10 dias que o backup não é feito.
Obrigado e sucesso.

Boa tarde, segue sugestão:
ls -1t => lista por data, do MAIS NOVO para o MAIS ANTIGO.
Para MANTER os 5 mais RECENTES, faça:
awk 'NR>5 {system("rm " $0)}' <<< $(ls -1t)

De uma forma mais "didática":
n=0;
for arq in $(ls -1t);do
let n++;
echo -n "$n $arq";
(($n<=5)) && echo " => Preservar" || { echo " => Remover"; rm ${arq}; }
sleep 0.125;
done


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________



4. Re: Remoção de arquivos após x arquivos no diretório [RESOLVIDO]

Adriano Barbosa de Souza
adrianokahn

(usa Ubuntu)

Enviado em 22/09/2021 - 08:08h


leandropscardua escreveu:


(Não testado) Algo mais ou menos isso
ls -tr | tail -5 | xargs rm


Muito obrigado leandro. Com alguns ajustes para o meu ambiente, fiz os testes e funcionou perfeitamente.

Que Deus abençoe


5. Re: Remoção de arquivos após x arquivos no diretório [RESOLVIDO]

Adriano Barbosa de Souza
adrianokahn

(usa Ubuntu)

Enviado em 22/09/2021 - 08:09h


msoliver escreveu:

adrianokahn escreveu:

Olá.
Qual maneira de criar um script em que um diretório que receba arquivos de backup, remova os mais antigos.
Só que os mais antigos não seriam contados por X dias e sim por X arquivos.
Hoje utilizo um código que remove os arquivos após o 5º dia, mantendo os últimos 5, mas o que quero é manter os últimos 5 arquivos, independente se já tem 1 ou 10 dias que o backup não é feito.
Obrigado e sucesso.

Boa tarde, segue sugestão:
ls -1t => lista por data, do MAIS NOVO para o MAIS ANTIGO.
Para MANTER os 5 mais RECENTES, faça:
awk 'NR>5 {system("rm " $0)}' <<< $(ls -1t)

De uma forma mais "didática":
n=0;
for arq in $(ls -1t);do
let n++;
echo -n "$n $arq";
(($n<=5)) && echo " => Preservar" || { echo " => Remover"; rm ${arq}; }
sleep 0.125;
done


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________


Obrigado pelo feedback. Implementei a solução acima e funcionou, mas irei testar a sua.

Que Deus abençoe