Excluir todos os arquivos mais antigos que o tempo especificado dentro de um diretório (Ubuntu)

0

Eu tenho um monte de arquivos em um diretório com todos os nomes diferentes e eu quero excluir todos os que são mais antigos que um tempo especificado.

Exemplo:

File1
File2
File3

File1 was made Mar 31 08:00
File2 was made Mar 31 08:01
File3 was made Mar 31 08:05

Eu quero excluir tudo o que foi criado antes de 31 de março de 08:04 em um diretório.

Além disso, a data de criação é a data da última modificação que eles nunca alteram e nunca estão sendo atualizados.

    
por Kirs Kringle 31.03.2015 / 10:31

2 respostas

4

Supondo que existam apenas arquivos regulares e sem coisas engraçadas, como subdiretórios ou outros objetos semelhantes a arquivos.

find -not -newermt "Mar 31 08:04" -delete

Para ver quais arquivos serão excluídos, execute sem -delete primeiro.

-not -newermt significa localizar arquivos cujo tempo de modificação é mais antigo que a string de hora especificada.

A string de tempo é analisada como a ferramenta date faz. Você pode testar sua string de tempo assim:

date -R -d "Mar 31 08:04"

saída no meu sistema:

Tue, 31 Mar 2015 08:04:00 +0200

Se date recusar sua string, então find -newermt .

Tenha em atenção que date (e, consequentemente, find ) também aceita expressões de linguagem natural como "2 weeks ago" ou "1 month ago".

Para mais informações, leia a man page de find e date . A explicação para a opção -newermt está listada em -newerXY na página man.

    
por 31.03.2015 / 11:08
1

Apenas para tornar a história completa, porque quando queremos excluir todos os arquivos mais antigos que um horário especificado em um diretório, esse tempo especificado é melhor especificado como, por exemplo, duas semanas de idade ou um mês de idade, em vez de especificar uma cadeia de data fixa.

Se sim, deixe-me apresentar um pacote Ubuntu pronto - tmpreaper :

Descrição: limpa arquivos em diretórios com base em sua idade

Este pacote fornece um programa que pode ser usado para limpar arquivos temporários  diretórios. Ele procura recursivamente no diretório, recusando-se a chdir ()  através de links simbólicos e remove arquivos que não foram acessados  quantidade de tempo especificada pelo usuário. Você pode especificar um conjunto de arquivos para proteger  da exclusão com um padrão de shell. Não removerá arquivos de propriedade do  processo EUID que tem o w claro, a menos que você peça, muito parecido  %código%. 'tmpreaper' não removerá links simbólicos, sockets, fifos ou especiais  arquivos, a menos que seja dada uma opção de linha de comando para habilitá-lo.

    
por 31.03.2015 / 22:23