shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] Removendo arquivos mais de um mês


From: MrBiTs
Subject: RE: [shell-script] Removendo arquivos mais de um mês
Date: Tue, 14 Dec 2004 10:13:18 -0200

<QUOTE>
esta é a minha priemira mensgem ao grupo, portanto, gostaria de dizer ola a
todos.
Minha dúvida é a seguinte, gostaria de excluir em um diretório todos os
arquivos .tar que sejam mais antigos que a data atual menos um mês.
Alguém pode me ajudar com algum caminho que eu tenha que percorrer para
fazer isso?

Olas e seja bem vindo

Voce pode utilizar um comando find, mais ou menos assim:

find /diretorio -name *.tar -ctime +30 (ou atime, ou mtime) 

Isso vai listar para voce os arquivos mais velhos que 30 dias. Dai,
colocamos um rm no final, assim:

find /diretorio -name *.tar -ctime +30 -exec rm -f {} \;

Isso apagará os seus arquivos
</QUOTE>

Senhores

O nosso sempre onipresente guru Julio enviou-me dois macetes sobre o find,
que posto aqui:

1 - Se não usar a opção -maxdepth, os arquivos dos subdiretórios tb serão
removidos;
        Entao, nesse momento o comando ficaria como find /diretorio -name
*.tar -ctime +30 -maxdepth 1 -exec rm -f {} \;
        Mas há mais:

2 - Esse erro é muito comum: qdo vc fez -name *.tar, que explodiu o
asterisco foi o shell e desta forma, se vc tivesse a.tar e b.tar no
diretório de origem da pesquisa, o find só locarizaria arquivos com estes
nomes nos subdiretório. O correto seria: -name \*.tar, pq o find e que
resolverá o * a cada subdiretório.

        Esse é um vicio meu. Seguindo a dica do Julio, teremos:
        find /diretorio -name \*.tar -ctime +30 -maxdepth 1 -exec rm -f {}
\;

Ainda é possivel fazer algo mais para garantir que somente arquivos, e nao
diretorios, serao excluidos:

        find /diretorio -name \*.tar -ctime +30 -type f -maxdepth 1 -exec rm
-f {} \;

[]'s e MUITO obrigado, Juliao. 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]