Encontre todos os arquivos com mais de um minuto

8

Como posso usar find para selecionar arquivos que foram gravados e não modificados no último minuto?

Eu sei que posso fazer o inverso, encontrar arquivos modificados nos últimos 60 segundos com -mtime -60s , mas eu quero os que não foram modificados nos últimos 60 segundos.

Eu uso o Linux e recebo este erro se eu usar segundos:

find ??/ -mtime +60s -name blah.tsv
find: invalid argument '+60s' to '-mtime'
    
por 719016 27.01.2012 / 17:26

5 respostas

12

Use find /path -type f -mtime +60s

O - logo antes dos dígitos não é um "traço de argumento" regular, mas significa "menor que". + é "mais que".

De man find :

All primaries which take a numeric argument allow the number to be preceded by a plus sign (''+'') or a minus sign (''-''). A preceding plus sign means ''more than n'', a preceding minus sign means ''less than n'' and neither means ''exactly n''.

Deve-se notar que para exatamente n , o tempo é arredondado. Então 1 (1 dia) não significa 86400 segundos.

    
por 27.01.2012 / 17:52
15
find . -type f -mmin +1

Exemplo

$ ls *
four.txt  one.txt  three.txt  two.txt

$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt
    
por 27.01.2012 / 17:55
4

O segundo - em -mtime -60s não é um delimitador de opção.

-mtime é uma opção e é seguida por um argumento da opção . O argumento da opção é -60s e o - é parte do próprio argumento da opção, não um delimitador de opção. Significa "menos de 60 segundos". Argumentos de opção 60s e +60s significam "igual a 60 segundos" e "maior que 60 segundos", respectivamente.

O manual do Apple MacOS e o manual do FreeBSD mencionam os prefixos + e - em exatamente um lugar, e esquecem de explicar em qualquer lugar o que são. É isso que eles são.

(O manual do GNU Info para GNU find tem a mesma omissão, o bastante interessante. Entretanto, a sintaxe do GNU find para os tempos é um pouco diferente da sintaxe BSD e MacOS find .)

Outras leituras

  • Apple incorporada (2008-02-24). find página de manual do MacOS 10 Biblioteca de Desenvolvedores do MacOS 10.
  • find (1) . 2010-03-17. Manual de Comandos Gerais do FreeBSD. Projeto FreeBSD.
por 27.01.2012 / 17:54
3

Você deve poder usar

find . ! -mtime -60s
    
por 27.01.2012 / 17:49
1

Em sistemas Unix, o tempo -m costumava ser seguido por um +/- seguido por um número seguido por unidades de tempo. [+ -] nn [dms]

O Linux usa mtime para dias, mmin para minutos, mas parece não haver uma opção de segundos e não usa um especificador de unidades de tempo. O + ou - ainda se refere a maior ou menor que o tempo ao invés de ser um argumento de opção como mencionado acima.

Você pode usar -mmin 1, mas link discute como lidar com segundos em geral.

    
por 31.08.2018 / 14:32

Tags