encontrar arquivos de log com mais de 30 dias

3

Estou trabalhando em um script para encontrar arquivos com mais de 30 dias em uma determinada pasta. Com base no requisito, eu tenho que deletar apenas arquivos com extensão .log ou .out e pular sub-diretórios.

O comando abaixo está retornando todos os arquivos .log * que foram modificados há 30 dias. No entanto, ele está retornando todos os arquivos .out, mesmo os mais recentes. Há algo errado no código abaixo?

    find -maxdepth 1 -mtime +30 -type f -name "*.log*" -o -name "*.out*"

você poderia me informar o que está errado na declaração acima

    
por linux_bee 28.10.2016 / 21:55

1 resposta

8

Tente:

find -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \)

O problema é que find se liga de maneira lógica e mais strong que lógica-or. Os pais contrariam isso.

Sem os parens, find está procurando por arquivos que correspondam a (a) -mtime +30 -type f -name "*.log*" ou (b) -name "*.out*" .

Com os parentes, find está procurando arquivos que (a) correspondam -mtime +30 -type f e (b) correspondam a -name "*.log*" ou -name "*.out*" .

    
por 28.10.2016 / 21:57

Tags