Exclua arquivos que foram criados antes de hoje

3

Eu quero pesquisar arquivos cuja data de criação é anterior a hoje.
Eu faço:

find $HOME -type f -name "myFile_*.sql.zip" -mtime +1

mas não retorna nada, deve pelo menos retornar um arquivo.

Onde estou errado?

    
por user1260928 11.12.2015 / 08:56

1 resposta

3

find com -mtime +1 retorna arquivos que foram modificados há dois ou mais dias.

É um comportamento documentado, por exemplo, -mtime ignora qualquer parte fracionária. De man find (o cálculo do tempo é idêntico em -atime , -mtime e -ctime ):

  

-atime n

     

O arquivo foi acessado pela última vez n * 24 horas atrás. Quando descobrir, quantos períodos de 24 horas atrás o arquivo foi acessado pela última vez,   qualquer                 A parte fracionária é ignorada, então, para corresponder a -atime +1, um arquivo deve ter sido acessado há pelo menos dois dias.

Agora, se você pode usar algumas soluções:

  1. Você pode fazer:

    find . -type f -mtime +0
    

    Isso faria com que você modificasse os arquivos um dia ou mais atrás.

    No seu caso:

    find $HOME -type f -name "myFile_*.sql.zip" -mtime +0
    
  2. Para obter precisão como neste caso, você deve usar a opção -mmin , que corresponde estritamente a minutos.

    Então, digamos que você deseja obter os arquivos que foram modificados mais de 7 horas e 10 minutos, ou seja, 430 minutos atrás, você pode fazer:

    find . -type f -mmin +430
    

    No seu caso, faça o cálculo e substitua 430 por esse valor:

    find $HOME -type f -name "myFile_*.sql.zip" -mtime +430
    
  3. Outra opção é fazer da maneira inversa.

    Você pode criar um arquivo de referência, por exemplo, ref.txt :

     touch -d 'today + 2 days ago' ref.txt
    

    Agora você pode encontrar arquivos que foram modificados mais recentemente do que ref.txt :

    find . -type f -newer ref.txt
    

    No seu caso:

    find $HOME -type f -name "myFile_*.sql.zip" -newer ref.txt
    

Quando estiver satisfeito com os resultados, você poderá remover o (s) arquivo (s), por exemplo:

find . -type f -mmin +430 -delete
    
por heemayl 11.12.2015 / 11:12