Excluindo todas as pastas anteriores a uma data especificada, exceto algumas delas

1

Eu tive que fazer um trabalho de script no bash para excluir todos os diretórios em um caminho que são mais antigos do que uma data especificada, exceto alguns deles. Eu sei o nome dos diretórios que não devem ser excluídos ...

Você pode me ajudar ???

Me desculpe, mas eu sou um iniciante ...

muito obrigado!

    
por mikjcl 25.01.2011 / 15:57

3 respostas

3

Este deve ser meu dia de busca.

find /yourpath -mmin +60 -type d -not \( -name dirname1 -o -name dirname2 \) -print0 | xargs -0 rm -r

localizará e excluirá todos os diretórios com mais de 60 minutos (adaptem-se adequadamente), que não são denominados dirname1 ou dirname2 . Você pode estender essa lista com -o name dirname de peças adicionais. Além disso, recomendo enfaticamente substituir a parte rm -r pelo eco para teste.

    
por 25.01.2011 / 16:18
2

experimente o tmpwatch com as opções de exclusão -x e -X

man tmpwatch para mais informações.

Eu nunca usei eu mesmo com as exclusões, então eu não posso fornecer exemplos, mas tenho certeza que isso funcionará.

    
por 25.01.2011 / 16:01
1

Para o% GNUfind:

find . ! -newermt 2010/10/01 -type d -regextype posix-egrep ! -regex '^.*/(foo|bar|baz)/?.*' -exec echo rm -rf {} +

Isso localizará e excluirá diretórios anteriores à data especificada que não correspondem à expressão regular. Altere "foo", etc., para corresponder aos nomes dos seus diretórios. Separe cada nome usando | . Remova o echo quando terminar de testar. A hora da modificação está marcada, mude para -newerat para verificar o tempo de acesso.

    
por 25.01.2011 / 16:29