Como posso recursivamente excluir arquivos antigos e remover diretórios vazios resultantes?

1

Estamos usando um servidor AIX para armazenar milhares e milhares de pequenos arquivos em uma estrutura de diretório aninhada. Eu estou tentando escrever um script que irá recursivamente excluir arquivos antigos e, em seguida, exclua o diretório contendo se esse foi o último arquivo no diretório.

Para fins de exemplos, digamos que qualquer arquivo com mais de 60 dias seja "antigo".

Parece simples e fácil, mas olhei em volta por um tempo e não consegui encontrar uma solução. Existe alguma combinação de find e seus flags, talvez pipelined com rmdir que irá realizar o acima?

    
por JeffK 31.01.2012 / 22:09

2 respostas

0

Você disse que está no AIX. Eu acho que os comandos básicos do shell farão o truque se eu não estiver errado.

find /path/to/files* -mtime +60 -exec rm {} \;
find /path/to/files -type d -exec rmdir 2>/dev/null {} \;
    
por 31.01.2012 / 22:30
2

Se você definir "mais antigo que" por ter um tempo de modificação de mais de 60 dias, o comando a seguir excluirá seus arquivos antigos:

find /your/dir -mtime +60 -exec rm -f {} \;

para podar diretórios vazios, você pode usar este comando:

find /your/dir -type d -exec rmdir {} \;

ele não encontra exatamente diretórios vazios, mas como o rmdir não exclui diretórios contendo arquivos, ele somente excluirá os vazios.

    
por 31.01.2012 / 22:29