Como faço para excluir arquivos maiores que uma determinada data no linux

4

Ocasionalmente eu extraio um arquivo na pasta errada e gostaria de mover ou excluir os arquivos recém-extraídos.

Qual é a maneira mais fácil de fazer isso através da linha de comando? Posso de alguma forma procurar por todos os arquivos que são mais recentes que o tempo de extração e pipe em rm?

Obrigado

    
por Tarski 27.09.2009 / 01:07

2 respostas

12

Editar: Conforme observado nos comentários, tar modifica o mtime e o ctime dos arquivos extraídos para que correspondam às datas no arquivo, portanto, esse primeiro método não funcionará, a menos que -m flag foi usado durante a extração. O último método é ideal, mas pode resultar na exclusão de arquivos que você deseja se os nomes dos arquivos colidirem.

find suporta um sinalizador -newer file , especificando que ele deve localizar arquivos mais recentes que arquivo . touch tem um argumento -t para modificar o tempo de acesso / modificação em um arquivo. Então, para consertar um oops que ocorreu por volta das 19:25:30:

$ tar xzf whoops.tar.gz
$ touch -t 200909261925.30 whoops-timestamp
$ find . -newer whoops-timestamp

E se você tiver certeza de que exibiu os arquivos corretos:

$ find . -newer whoops-timestamp -print0 | xargs -0 rm -v

Uma alternativa é excluir todos os arquivos listados no arquivo que você acabou de extrair:

$ tar tfz whoops.tar.gz | xargs rm -v
    
por 27.09.2009 / 01:17
2

Outra alternativa com o find:

$ find "/path/to_clean/" -type f -mtime +30 -print0 | xargs -0 rm -f

em que o +30 é o número de dias que você deseja manter.

    
por 27.09.2009 / 01:47