Supondo que você realmente precise usar find
para recorrer a subdiretórios:
find /export/home/ftp \( -name console.log -or -name server.log \) -mtime +30 -exec rm -f {} +
O script de shell não deve excluir nenhum arquivo em * root dir *. Meu caminho * será como / export / home / ftp / ...
Eu fiz algumas pesquisas e descobri a maneira de encontrar e excluir os arquivos com mais de 30 dias de um caminho específico, usando comandos find e exec.
* localizar / exportar / home / ftp / -tipo f -mtime +30 -exec rm -f {} \;
Mas, de acordo com o requisito, eu quero excluir console.log e server.log somente desse diretório e excluir os arquivos restantes.
Por favor, me ajudem nessa questão.
Se você só precisar remover o antigo server.log e o console.log todo mês, também poderá usar logrotate
, que provavelmente já está sendo executado no RHEL. Um trecho de configuração como este funcionará em /etc/logrotate.d/*.conf
ou onde quer que os arquivos de configuração estejam localizados em seu sistema.
# rotate server.log and console.log every month
# delete, not compress, old file
/export/home/ftp/server.log /export/home/ftp/console.log {
monthly
rotate 0
}
Um cron mensal personalizado, como sugerido acima, também funcionará bem. De fato, como o logrotate é executado a partir do cron, você poderia considerar isso como uma extensão do cron. HTH.
Por que não usar apenas um cron mensal?
@monthly / usr / bin / rm -f console.log @monthly / usr / bin / rm -f server.log
Definitivamente, seria mais seguro fazer as coisas com o find.
Verifique esta ferramenta útil do debian tmpreaper
Uma alternativa seria usar xargs, que aparentemente é mais eficiente - link
Então você poderia fazer algo assim:
find /export/home/ftp -maxdepth 1 \( -name console.log -or -name server.log \) -mtime +30 | xargs -O -r rm