Argumento inválido ao executar o comando 'find' com -exec e -mtime

Argumento inválido ao executar o comando 'find' com -exec e -mtime

Uma mensagem de erro bastante estranha apareceu no Centos.

Tentei executar este comando:

find /tmp/something -type f -mtime +2h -exec cp '{}' /tmp/target \;

E o erro que recebi:

find: invalid argument `-exec' to `-mtime'

O 'achado' pode ser diferente em outras distribuições?

Responder1

-mtimeé usado por dias, se você precisar de 2 horas, verifique isto:

find /tmp/something -type f -mmin +120 -exec cp '{}' /tmp/target \;

mmin especifica minutos, então -mmin +120 filtrará aqueles há mais de 120 minutos (2 horas). Do manual:

-mtime n

Os dados do arquivo foram modificados pela última vez há n*24 horas. Veja os comentários sobre -atime para entender como o arredondamento afeta a interpretação dos tempos de modificação do arquivo.

-mmin n

Os dados do arquivo foram modificados pela última vez há n minutos.

Responder2

a findimplementação no MacOS é um pouco diferente daquela disponível no Linux. Acredito que você recebeu o erro acima em um sistema Linux.

No Linux, mtimeaceita apenas +- e um número. O número é o número de dias.

Para o que você deseja fazer acima, você deve usarmmin

-mmin n
      File’s data was last modified n minutes ago.

Este comando deve funcionar no Linux:

find /tmp/something -type f -mmin +120 -exec cp '{}' /tmp/target \;

informação relacionada