Como deletar um arquivo que não tenha sido acessado recentemente?

1

Como encontrar um arquivo no Ubuntu que não acessa recentemente? Eu quero excluir todos os arquivos que não foram acessados por um longo tempo. Se eu fizer isso manualmente, isso consumirá muito tempo. Existe algum comando para isso?

    
por Avani badheka 05.10.2016 / 12:42

2 respostas

5

O comando 'find' tem uma opção chamada '-atime' exatamente para esse uso. Se você quiser encontrar todos os arquivos recursivamente em um diretório, que não foram acessados por 30 dias, use:

find /directory/path/ -type f -atime +29

Acho que está sempre usando este primeiro comando para listar quais arquivos você está operando antes de excluir. Se você quiser excluí-los, use:

find /directory/path/ -type f -atime +29 -delete

Como mencionado por Amias nos comentários, nem todos os sistemas de arquivos usam o atime. Você também pode pesquisar por tempo de modificação (modificações no conteúdo do arquivo) com -mtime ou tempo alterado (alterações nas permissões / propriedade de arquivos, etc.) com ctime .

Vale a pena notar que a estrutura de tempo de find é incomum, pois ele pesquisa em unidades de 24 horas por dia, então o que você pode pensar ter 3 dias, acho que é de apenas 2 dias. Daí o uso de +29 por 30 dias. O + é usado para especificar, mais do que um número de dias, - pode ser usado para especificar menos que.

Se você não quiser que a pesquisa seja recursiva, poderá limitar o quanto ela desce para a árvore de diretórios com -maxdepth n , em que n é o número de diretórios a serem reduzidos.

    
por Arronical 05.10.2016 / 12:51
2

Isso parece um trabalho para find

Exemplo:

find -atime +1

Isso retornará todos os arquivos em seu diretório atual (recursivamente) que foram acessados há mais de um dia

Veja man find para mais informações sobre possíveis argumentos a serem encontrados.

    
por Wayne_Yux 05.10.2016 / 12:50