我正在尝试查找 6 个月或更长时间未碰过的所有文件。我运行了这个命令,但它只显示 6 个月内编辑过的所有文件。
find . -type f -mtime 183 -exec ls -latr {} \;
我怎样才能让它持续6个月或更长时间?
答案1
-mtime 183
适用于其年龄向上舍入到下一个 24 小时周期等于 183 的文件,因此年龄介于 182*24*3600 秒(不包括)和 183*24*3600 秒(包括)之间(其中秒是 Unix 秒,这是有一个可变的持续时间,即地球日的第86400部分,而不是 ISO 定义的秒的固定持续时间,因此所有天都是 86400 秒,我们不需要考虑闰秒。
使用-mtime +183
,您将获得其年龄向上舍入到下一个 24 小时期间严格大于 183 的文件,因此年龄严格大于 183*24*3600 秒。
请注意,24 小时期间不一定与天由于部分地区实行夏令时。
对于某些find
实现(FreeBSD、GNU),您还可以使用! -newermt '6 months ago'
.将修改时间与作为参数给出的 imemt
进行比较。m
t
这将给出在 6 个月前的同一天、同一时间之前修改的文件,但对于 GNU find
(与 FreeBSD 相对),它不会进行 DST 调整(在适用 DST 的时区),就是这样为您提供如同 UTC 时区一样的信息。如果现在是 2016-07-01 13:00(夏令时),FreeBSDfind
将报告最后修改的文件在 2016-01-01 13:00(冬令时)之前,而 GNUfind
将报告最后修改的文件在 2016-01-01 12 之前:00(冬季时间)。当月的 29 日、30 日或 31 日调用时也可能会有变化,而 6 个月前的月份没有这样的日期。
答案2
+
在日期值前面添加一个。从手册页:
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
和
... When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.
虽然这里指的是测试,但对于和测试atime
来说是一样的。mtime
ctime