欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

[20210625]find -mtime +N N -N时间问题补充.txt

程序员文章站 2022-06-24 21:18:49
[20210626]find -mtime +N N -N时间问题补充.txt--//昨天find -mtime的测试,为了更好的说明问题,做一个例子:--//还有另外一个原因确定是否包括等于的情况.--//后记:应该写成Q second , 不过不影响测试结果.就是升序第3个日期的时间部分表示当时 ......

[20210626]find -mtime +n n -n时间问题补充.txt

--//昨天find -mtime的测试,为了更好的说明问题,做一个例子:
--//还有另外一个原因确定是否包括等于的情况.

--//后记:应该写成q second , 不过不影响测试结果.就是升序第3个日期的时间部分表示当时时间(时分秒).

$ mkdir aaa
$ cd aaa

$ seq -3 1 2 | xargs -iq  date "+%y%m%d%h%m.%s" --date='2 days ago q seconds ago' | xargs -iq touch -t q q ; find . -mtime +1 -exec ls -ltr {} \+; echo ======  ; ls -ltr
-rw-r--r-- 1 oracle oinstall 0 jun 23 15:53 ./202106231553.13
-rw-r--r-- 1 oracle oinstall 0 jun 23 15:53 ./202106231553.14
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:53:13 202106231553.13
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:53:14 202106231553.14
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:53:15 202106231553.15
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:53:16 202106231553.16
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:53:17 202106231553.17
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:53:18 202106231553.18

--//看出分界点了吗?执行时的当前时间是2021-06-25 15:53:15.我测试多次find -mtime +1 都是显示2条,注意执行前删除前面测试的文件.
--//实际上比较准确的时间点是 小于 当前时间-2天.

$ rm -f 2021*
--//记住每次测试前执行它,后面不再提及

$ seq -3 1 2 | xargs -iq  date "+%y%m%d%h%m.%s" --date='2 days ago q seconds ago' | xargs -iq touch -t q q ; find . -mtime 1 -exec ls -ltr {} \+; echo ======  ; ls -ltr
--//注意执行的是find . -mtime 1
-rw-r--r-- 1 oracle oinstall 0 jun 23 15:55 ./202106231555.52
-rw-r--r-- 1 oracle oinstall 0 jun 23 15:55 ./202106231555.53
-rw-r--r-- 1 oracle oinstall 0 jun 23 15:55 ./202106231555.54
-rw-r--r-- 1 oracle oinstall 0 jun 23 15:55 ./202106231555.55
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:55:50 202106231555.50
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:55:51 202106231555.51
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:55:52 202106231555.52
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:55:53 202106231555.53
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:55:54 202106231555.54
-rw-r--r-- 1 oracle oinstall 0 2021-06-23 15:55:55 202106231555.55

--//当前时间是2021-06-25 15:55:52,
--//find . -mtime 1 的查询时间范围的下边界是 大于等于 当前时间-2天.

$ seq -3 1 2 | xargs -iq  date "+%y%m%d%h%m.%s" --date='1 days ago q seconds ago' | xargs -iq touch -t q q ; find . -mtime 1 -exec ls -ltr {} \+; echo ======  ; ls -ltr ; rm -f 202106*
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:12 ./202106241612.50
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:12 ./202106241612.51
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:12:50 202106241612.50
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:12:51 202106241612.51
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:12:52 202106241612.52
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:12:53 202106241612.53
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:12:54 202106241612.54
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:12:55 202106241612.55

--//当前时间是2021-06-25 16:12:52
--//find . -mtime 1 的查询时间范围的上边界是 小于 当前时间-1天.

$ seq -3 1 2 | xargs -iq  date "+%y%m%d%h%m.%s" --date='1 days ago q seconds ago' | xargs -iq touch -t q q ; find . -mtime -1 -exec ls -ltr {} \+; echo ======  ; ls -ltr ; rm -f 202106*
-rw-r--r-- 1 oracle oinstall    0 jun 24 16:19 ./202106241619.35
-rw-r--r-- 1 oracle oinstall    0 jun 24 16:19 ./202106241619.36
-rw-r--r-- 1 oracle oinstall    0 jun 24 16:19 ./202106241619.37
-rw-r--r-- 1 oracle oinstall    0 jun 24 16:19 ./202106241619.38

.:
total 0
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:19 202106241619.33
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:19 202106241619.34
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:19 202106241619.35
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:19 202106241619.36
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:19 202106241619.37
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:19 202106241619.38
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:19:33 202106241619.33
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:19:34 202106241619.34
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:19:35 202106241619.35
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:19:36 202106241619.36
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:19:37 202106241619.37
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:19:38 202106241619.38
--//感觉输出有点奇怪,实际存在一个目录.在作怪,因为. 在find . -mtime -1 的范围包括.目录,改写如下:

$ seq -3 1 2 | xargs -iq  date "+%y%m%d%h%m.%s" --date='1 days ago q seconds ago' | xargs -iq touch -t q q ; find . -name "202106*" -mtime -1 -exec ls -ltr {} \+; echo ======  ; ls -ltr ; rm -f 202106*
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:22 ./202106241622.54
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:22 ./202106241622.55
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:22 ./202106241622.56
-rw-r--r-- 1 oracle oinstall 0 jun 24 16:22 ./202106241622.57
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:22:52 202106241622.52
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:22:53 202106241622.53
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:22:54 202106241622.54
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:22:55 202106241622.55
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:22:56 202106241622.56
-rw-r--r-- 1 oracle oinstall 0 2021-06-24 16:22:57 202106241622.57

--//当前时间是2021-06-25 16:22:54.
--//find . -mtime -1 的查询时间范围是 大于等于 当前时间-1天.

总结:
1.感觉测试在细节上浪费时间.
2.总之清楚一点,大致总结如下:
find -mtime +n 表示 小于 <当前时间-(n+1)天 .
find -mtime +1 表示 在   >=当前时间-(n+1)天 <当前时间-(n)天 之间.
find -mtime -1 表示 大于 >=当前时间-(n)天.

--//我敢打赌许多人在这个问题的理解上都是错误的.