Como posso usar find
para selecionar arquivos que foram gravados e não modificados no último minuto?
Eu sei que posso fazer o contrário, encontrar arquivos modificados nos últimos 60 segundos com -mtime -60s
, mas quero aqueles que não foram modificados nos últimos 60 segundos.
Eu uso Linux e recebo este erro se usar segundos:
find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'
Responder1
Usarfind /path -type f -mtime +60s
O -
pouco antes dos dígitos não é um "traço de argumento" regular, mas significa "menos que". +
então é "mais que".
De man find
:
Todas as primárias que aceitam um argumento numérico permitem que o número seja precedido por um sinal de mais (``+'') ou um sinal de menos (``-''). Um sinal de mais precedente significa ``mais que n'', um sinal de menos precedente significa ``menos que n'' e nenhum deles significa ``exatamente n''.
Deve-se notar que paraexatamente n, o tempo é arredondado. Portanto 1
(1 dia) não significa 86.400 segundos.
Responder2
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
Responder3
O segundo -
é-mtime -60s
nãoum delimitador de opção.
-mtime
é uma opção e é seguida por umargumento de opção. O argumento da opção é -60s
, e nele -
faz parte do próprio argumento da opção,nãoum delimitador de opção. Significa "menos de 60 segundos". Argumentos de opção 60s
significam +60s
"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. Isto é o que eles são.
(O manual GNU Info para GNU find
tem a mesma omissão, curiosamente. No entanto, find
a sintaxe do GNU para times é um pouco diferente da find
sintaxe BSD e MacOS.)
Leitura adicional
- Incorporação da Apple (24/02/2008).
find
Página de manual do MacOS 10. Biblioteca do desenvolvedor MacOS 10. find
(1). 17/03/2010. Manual de comandos gerais do FreeBSD. Projeto FreeBSD.
Responder4
Em sistemas Unix, -mtime costumava ser seguido por +/- seguido por um número seguido por unidades de tempo. [+-]nn[dms]
O Linux usa mtime para dias, mmin para minutos, mas não parece 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, em vez de ser um argumento de opção mencionado acima.
Você poderia usar -mmin 1, mashttps://unix.stackexchange.com/questions/238738/find-files-newer-than-15-seconds-but-older-than-2-secondsdiscute como lidar com segundos em geral.