Encontre o comando com -ctime +0 para teste

2

O comando a seguir excluirá diretórios e sub-diretórios com mais de 100 dias:

find /var/tmp -type d -ctime +100 -exec rm -rf {} \;

Mas, na verdade, quero realizar o teste para verificar se o comando removerá todos os diretórios.

Por isso, defino -ctime +0 (para remover diretórios com idade de 0 dia)

find /var/tmp -type d -ctime +0 -exec rm -rf {} \;

Mas o comando find não removeu os diretórios.

Como posso alterar o -ctime para realizar o teste?

    
por maihabunash 02.12.2014 / 10:08

2 respostas

2

A página man de find diz isso sobre -ctime :

-ctime n
       File's status was last changed n*24 hours ago.  See the comments
       for -atime to understand how rounding affects the interpretation
       of file status change times.

e isto sobre -atime :

-atime n
       File was last accessed n*24 hours ago.  When  find  figures  out
       how  many  24-hour  periods  ago the file was last accessed, any
       fractional part is ignored, so to match -atime +1, a file has to
       have been accessed at least two days ago.

Portanto, você deve esperar que -ctime 1 remova os arquivos que foram alterados há 1 dia ou mais com base no arredondamento e defina-o como -ctime +-1 para obter o efeito desejado.

Para evitar que o próprio /var/tmp seja excluído, especifique -mindepth 1 e, enquanto estiver experimentando, primeiro imprima os diretórios em que find vai funcionar:

 find /var/tmp -mindepth 1 -type d -ctime +-1  -print

antes de fazer o destrutivo:

  find /var/tmp -mindepth 1 -type d -ctime +-1 -exec rm -rf {} +

(Eu usaria + em vez de \; sem necessidade de invocar rm várias vezes. (Como alternativa, você poderia usar -delete em vez de usar -exec rm.... , mas, nesse caso, find precisaria remover os arquivos sob esses diretórios também, deixando os diretamente sob /var/tmp )

    
por 02.12.2014 / 10:22
0

Este comando remove os diretórios criados no último dia.

find /var/tmp -type d -ctime -1 -exec rm -rf {} \;
    
por 02.12.2014 / 10:21

Tags