Comando Find retornando dados errados [duplicado]

0

Estou usando este comando para listar todos os arquivos que foram modificados no último dia (ou criado)

find ./ -mtime 1 -ls

No entanto, ele continua retornando os arquivos a partir de 30 de abril, quando eu estou executando o comando agora mesmo (2 de maio às 19:38)

Alguém pode aconselhar porque isso está ocorrendo e / ou me dar um comando melhor para usar para encontrar arquivos modificados ou criados no último período de 24 horas

    
por MOLEDesign 02.05.2015 / 20:40

2 respostas

3

Para find arquivos que foram modificados há alguns dias, é melhor usar -mmin em vez de -mtime , pois o último ignorará qualquer parte fracionária. Então, 1 dia 23 horas também é tratado como 1 dia.

De man find :

-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.

No seu caso, o seguinte mostrará os arquivos que foram modificados nas últimas 24 horas, ou seja, 1440 min:

find . -mmin -1440 -ls 
    
por 02.05.2015 / 20:58
2

-mtime N significa arquivos cuja idade A em dias satisfaz N A < N +1. Em outras palavras, -mtime N seleciona arquivos que foram modificados pela última vez entre N e N +1 dias atrás. Por exemplo, -mtime 1 seleciona arquivos que foram modificados entre 1 e 2 dias atrás. Para selecionar arquivos que foram modificados no último dia (como no último período de 24 horas), use -mtime 0 .

-mtime -N significa arquivos cuja idade A satisfaz A < N , isto é, arquivos modificados há menos de N dias atrás. Menos intuitivamente, -mtime +N significa arquivos cuja idade A satisfaz N +1 <,> , ou seja, arquivos modificados pelo menos N +1 dias atrás.

Se você achar essas regras difíceis de lembrar, use um arquivo de referência.

touch -d '1 day ago' cutoff
find . -newer cutoff

(A sintaxe “1 dia atrás” requer o% GNUtouch.)

    
por 02.05.2015 / 22:51