Como remover arquivos modificados entre datas específicas?

12

Como no tópico: eu gostaria de remover arquivos em um diretório que foram modificados em um período específico. Como posso fazer isso ?

Patryk
fonte

Respostas:

18

O comando GNU findé o caminho a percorrer. Por exemplo, para excluir todos os arquivos no diretório atual entre 1 e 5 de agosto, você pode usar o seguinte comando

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

É melhor executar o comando sem a -deleteação, primeiro, para ver a lista de arquivos interessados ​​(pode ser um bom substituto -lsque produza uma lista do tipo ls).

A remoção da -maxdepth 1especificação também atravessará todos os subdiretórios.

Você também pode especificar horas, por exemplo

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Esteja avisado para não remover aspas simples, que protegem os espaços entre data e hora.

O personagem !é uma negação, deve-se ler: mais recente que nesta data, mas não mais nova que nesta outra data.

enzotib
fonte
Obrigado pela resposta. Também posso usar algo para escolher o intervalo de horas? E qual é o '!' usado para ?
quer
O !não é. Neste exemplo: Não é mais recente que 06/08/2011.
con-f-use
@lordmonkey: ver a minha edição em que a resposta
enzotib
3
+1. Eu não sabia - excluir o predicado. Talvez não seja necessário, mas vou acrescentar -type f.
Michał Šrajer
@ Michał Šrajer: boas dicas para -type f, eu esqueço isso. O -deleteé um extensões GNU, eu acho.
enzotib