Estou trabalhando em um script para localizar arquivos com mais de 30 dias em uma determinada pasta. Com base no requisito, preciso excluir apenas arquivos com extensão.registroou.forae pule subdiretó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 há de errado na declaração acima
Responder1
Tentar:
find -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \)
O problema era que find
os vínculos lógicos e mais rígidos do que lógicos ou. Os parênteses neutralizam isso.
Sem os parênteses, find
está procurando por arquivos que correspondamqualquer(a)-mtime +30 -type f -name "*.log*"
ou(b) -name "*.out*"
.
Com os parênteses, find
procura arquivos que (a) correspondam-mtime +30 -type f
e(b) corresponder a -name "*.log*"
ou -name "*.out*"
.