
¿Cómo puedo utilizar find
para seleccionar archivos que han sido escritos y no modificados en el último minuto?
Sé que puedo hacerlo al revés, buscar archivos modificados en los últimos 60 segundos con -mtime -60s
, pero quiero los que no se han modificado en los últimos 60 segundos.
Uso Linux y aparece este error si uso segundos:
find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'
Respuesta1
Usarfind /path -type f -mtime +60s
El -
justo antes de los dígitos no es un "guión de argumento" normal, sino que significa "menos que". +
entonces es "más que".
De man find
:
Todos los primarios que toman un argumento numérico permiten que el número esté precedido por un signo más (``+'') o un signo menos (``-''). Un signo más precedente significa "más que n", un signo menos precedente significa "menos que n" y ninguno significa "exactamente n".
Cabe señalar que paraexactamente norte, el tiempo se redondea. Entonces 1
(1 día) no significa 86400 segundos.
Respuesta2
find . -type f -mmin +1
Ejemplo
$ ls *
four.txt one.txt three.txt two.txt
$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt
Respuesta3
El segundo -
en -mtime -60s
esnoun delimitador de opciones.
-mtime
es una opción, y va seguida de unaargumento de opción. El argumento de opción es -60s
, y -
en él es parte del argumento de opción en sí,noun delimitador de opciones. Significa "menos de 60 segundos". Argumentos de opción 60s
y +60s
significan "igual a 60 segundos" y "mayor a 60 segundos", respectivamente.
El manual de Apple MacOS y el manual de FreeBSD mencionan los prefijos +
y -
exactamente en un lugar, y se olvidan de explicar en cualquier lugar qué son. Esto es lo que son.
find
( Curiosamente, el manual GNU Info para GNU tiene la misma omisión. Sin embargo, find
la sintaxis de GNU para times es algo diferente a la find
sintaxis de BSD y MacOS).
Otras lecturas
- Apple incorporada (24 de febrero de 2008).
find
Página del manual de MacOS 10. Biblioteca para desarrolladores de MacOS 10. find
(1). 2010-03-17. Manual de comandos generales de FreeBSD. Proyecto FreeBSD.
Respuesta4
En los sistemas Unix, -mtime solía ir seguido de +/- seguido de un número seguido de unidades de tiempo. [+-]nn[dms]
Linux usa mtime para días, mmin para minutos, pero no parece haber una opción de segundos y no usa un especificador de unidades de tiempo. El + o - todavía se refiere a mayor o menor que el tiempo en lugar de ser un argumento de opción como se mencionó anteriormente.
Podrías usar -mmin 1, perohttps://unix.stackexchange.com/questions/238738/find-files-newer-than-15-segundos-pero-antiguos-que-2-segundosanaliza cómo manejar segundos en general.