查找所有超过一分钟的文件

查找所有超过一分钟的文件

我如何使用find来选择最近一分钟内已写入但未修改的文件?

我知道我可以反过来做,用 查找过去 60 秒内修改过的文件-mtime -60s,但我想要过去 60 秒内未被修改的文件。

我使用 Linux,如果使用秒,则会出现此错误:

find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'

答案1

使用find /path -type f -mtime +60s

数字前的-不是常规的“参数破折号”,而是表示“小于”。+然后是“大于”。

man find

所有采用数字参数的基数都允许在数字前加上加号(“+”)或减号(“-”)。前面的加号表示“大于 n”,前面的减号表示“小于 n”,两者都不表示“正好是 n”。

需要注意的是正好 n,时间是四舍五入的。因此1(1天)并不意味着86400秒。

答案2

find . -type f -mmin +1

例子

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

$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt

答案3

第二个--mtime -60s不是选项分隔符。

-mtime是一个选项,后面跟着一个选项参数。选项参数是-60s,其中-的 是选项参数本身的一部分,不是选项分隔符。表示“少于 60 秒”。选项参数60s+60s分别表示“等于 60 秒”和“大于 60 秒”。

Apple MacOS 手册和 FreeBSD 手册仅在一个地方提到+-前缀,并且忘记在任何地方解释它们是什么。这就是它们的含义。

(有趣的是,GNU 的 GNU Info 手册也find有同样的遗漏。但是,GNUfind的时间语法与 BSD 和 MacOS 语法略有不同find。)

进一步阅读

答案4

在 Unix 系统中,-mtime 后面跟着一个 +/-,后面跟着一个数字,后面跟着时间单位。[+-]nn[dms]

Linux 使用 mtime 表示天,mmin 表示分钟,但似乎没有秒选项,也不使用时间单位说明符。+ 或 - 仍然表示大于或小于时间,而不是如上所述的选项参数。

您可以使用 -mmin 1,但是https://unix.stackexchange.com/questions/238738/find-files-newer-than-15-seconds-but-older-than-2-seconds讨论如何处理秒数。

相关内容