Find all files older than one minute
How can I use find
to select files that have been written and not modified in the last minute?
I know I can do it the other way around, find files modified in the last 60 seconds with -mtime -60s
, but I want the ones that haven't been modified in the last 60 seconds.
I use Linux and get this error if I use seconds:
find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'
Use find /path -type f -mtime +60s
The -
just before the digits is not a regular "argument dash", but means "less than". +
then is "more than".
From 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''.
It should be noted that for exactly n, the time is rounded. So 1
(1 day) does not mean 86400 seconds.
find . -type f -mmin +1
Example
$ ls *
four.txt one.txt three.txt two.txt
$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt
The second -
in -mtime -60s
is not an option delimiter.
-mtime
is an option, and it is followed by an option argument. The option argument is -60s
, and the -
in it is part of the option argument itself, not an option delimiter. It means "less than 60 seconds". Option arguments 60s
and +60s
mean "equal to 60 seconds" and "greater than 60 seconds", respectively.
The Apple MacOS manual and the FreeBSD manual mention the +
and -
prefixes in exactly one place, and forget to explain anywhere what they are. This is what they are.
(The GNU Info manual for GNU find
has the same omission, interestingly enough. However, GNU find
's syntax for times is somewhat different to the BSD and MacOS find
syntax.)
Further reading
- Apple incorporated (2008-02-24).
find
MacOS 10 manual page. MacOS 10 Developer Library. -
find
(1). 2010-03-17. FreeBSD General Commands Manual. FreeBSD Project.
You should be able to use
find . ! -mtime -60s