[20210624]find -mtime +N N -N的时间范围问题.txt
--//今天再次遇到使用find问题。以前的链接:
--//http://blog.itpub.net/267265/viewspace-2766983/ => [20210408]使用linux find注意.txt
# date
Thu Jun 24 09:03:10 CST 2021
# ls -ltr | head
total 54052
-rw-r----- 1 oracle oinstall 780 2021-06-22 10:38:35 dbcndg2_ora_7123_20210622103835767385143795.aud
-rw-r----- 1 oracle oinstall 779 2021-06-22 10:41:23 dbcndg2_ora_8364_20210622104123871801143795.aud
-rw-r----- 1 oracle oinstall 769 2021-06-22 10:42:36 dbcndg2_ora_8423_20210622104236323093143795.aud
-rw-r----- 1 oracle oinstall 769 2021-06-22 10:42:36 dbcndg2_ora_8421_20210622104236233765143795.aud
-rw-r----- 1 oracle oinstall 769 2021-06-22 10:42:36 dbcndg2_ora_8419_20210622104236184227143795.aud
-rw-r----- 1 oracle oinstall 769 2021-06-22 10:42:38 dbcndg2_ora_8453_20210622104238972264143795.aud
-rw-r----- 1 oracle oinstall 769 2021-06-22 10:42:38 dbcndg2_ora_8451_20210622104238926965143795.aud
-rw-r----- 1 oracle oinstall 769 2021-06-22 10:42:38 dbcndg2_ora_8449_20210622104238876984143795.aud
-rw-r----- 1 oracle oinstall 769 2021-06-22 10:42:38 dbcndg2_ora_8447_20210622104238823625143795.aud
# /usr/bin/find /u01/app/oracle/admin/dbcndg2/adump -mtime +1 -name "*.aud"
--//日期2021/6/24 09:03:10,为什么find -mtime +1 执行时2021/6/22号的文件没有显示呢?
--//按照我以前的理解日期是2021/06/23 09:03:10之前aud文件都会显示。我理解错误吗?
--//补充如果按照链接http://www.oracleblog.org/study-note/how-to-calculate-find-mtime/的计算方法.
--//2021/06/23 09:03:10 之前的文件都会显示.
# touch -d 20210622 aaa.aud
# ls -l aaa.aud dbcndg2_ora_7123_20210622103835767385143795.aud
-rw-r--r-- 1 root root 0 2021-06-22 00:00:00 aaa.aud
-rw-r----- 1 oracle oinstall 780 2021-06-22 10:38:35 dbcndg2_ora_7123_20210622103835767385143795.aud
# /usr/bin/find /u01/app/oracle/admin/dbcndg2/adump -name "*.aud" -mtime +1
/u01/app/oracle/admin/dbcndg2/adump/aaa.aud
--//可以显示。
# touch -d "2021/06/22 09:03:00" aaa.aud
# ls -l aaa.aud dbcndg2_ora_7123_20210622103835767385143795.aud
-rw-r--r-- 1 root root 0 2021-06-22 09:03:00 aaa.aud
-rw-r----- 1 oracle oinstall 780 2021-06-22 10:38:35 dbcndg2_ora_7123_20210622103835767385143795.aud
# /usr/bin/find /u01/app/oracle/admin/dbcndg2/adump -name "*.aud" -mtime +1
/u01/app/oracle/admin/dbcndg2/adump/aaa.aud
--//可以显示。
# date
Thu Jun 24 09:21:32 CST 2021
# touch -d "2021/06/22 09:30:00" aaa.aud
# ls -l aaa.aud dbcndg2_ora_7123_20210622103835767385143795.aud
-rw-r--r-- 1 root root 0 2021-06-22 09:30:00 aaa.aud
-rw-r----- 1 oracle oinstall 780 2021-06-22 10:38:35 dbcndg2_ora_7123_20210622103835767385143795.aud
# date
Thu Jun 24 09:22:14 CST 2021
# /usr/bin/find /u01/app/oracle/admin/dbcndg2/adump -name "*.aud" -mtime +1
--//无显示。
--//你可以发现实际上是2天之前的文件才会显示。为什么会是这样呢?
# touch -d "2021/06/22 09:23:00" aaa.aud
# date ;/usr/bin/find /u01/app/oracle/admin/dbcndg2/adump -name "*.aud" -mtime +1 -exec ls -l {} \;
Thu Jun 24 09:24:21 CST 2021
-rw-r--r-- 1 root root 0 Jun 22 09:23 /u01/app/oracle/admin/dbcndg2/adump/aaa.aud
--//看来我自己对于find -mtime 里面的+n数字理解错误。
--//我找到一个链接:http://www.oracleblog.org/study-note/how-to-calculate-find-mtime/
--//该blog中时间算法跟我以前的理解是一致的,但是我的测试确实与实际情况不符合。
--//晚上在家里使用windows 7下的Cygwin64测试看看.
$ date
Thu, Jun 24, 2021 9:46:54 PM
--//注 晚上2021/06/24 21:46:54.
$ touch -d "2021/06/22 09:23:00" aaa.aud
$ touch -d "2021/06/23 09:23:00" bbb.aud
$ touch -d "2021/06/24 09:23:00" ccc.aud
$ ls -ltr *.aud
-rw-r--r-- 1 Administrator None 0 Jun 22 09:23 aaa.aud
-rw-r--r-- 1 Administrator None 0 Jun 23 09:23 bbb.aud
-rw-r--r-- 1 Administrator None 0 Jun 24 09:23 ccc.aud
$ find . -name "*.aud" -mtime +2
--//无显示
$ find . -name "*.aud" -mtime +1 -exec ls -l {} \;
-rw-r--r-- 1 Administrator None 0 Jun 22 09:23 ./aaa.aud
--//按照这个介绍http://www.oracleblog.org/study-note/how-to-calculate-find-mtime/的计算方法.
--//-mtime +1应该是2021/06/23 21:46:54时间之前的文件都显示.而实际不是.
$ date
Thu, Jun 24, 2021 10:18:09 PM
$ touch -d "2021/06/22 22:10:00" bbb.aud
$ find . -name "*.aud" -mtime +1 -exec ls -l {} \+
-rw-r--r-- 1 Administrator None 0 Jun 22 09:23 ./aaa.aud
-rw-r--r-- 1 Administrator None 0 Jun 22 22:10 ./bbb.aud
$ date
Thu, Jun 24, 2021 10:20:11 PM
$ touch -d "2021/06/22 22:22:00" bbb.aud
$ find . -name "*.aud" -mtime +1 -exec ls -l {} \+
-rw-r--r-- 1 Administrator None 0 Jun 22 09:23 ./aaa.aud
--//家里的测试与办公环境的测试一样,看来许多人包括我理解都是错误的.
--//实际上-mtime +1 显示的是2天之前的文件,而不是1天.比较正确的理解应该是
--//假设现在时间是2021/06/24 22:20:11.
-mtime +1 => 小于2021/06/22 22:20:11
-mtime 1 => 2021/06/22 22:20:11~ 2021/06/23 22:20:11
-mtime -1 => 大于 2021/06/23 22:20:11
--//是否包含等于我的测试很难判断,看来许多人对于这个问题的理解都是错误的.
$ date
Thu, Jun 24, 2021 10:30:53 PM
$ touch -d "2021/06/22 23:10:00" bbb.aud
$ find . -name "*.aud" -mtime +1 -exec ls -l {} \+
-rw-r--r-- 1 Administrator None 0 Jun 22 09:23 ./aaa.aud
$ find . -name "*.aud" -mtime 1 -exec ls -l {} \+
-rw-r--r-- 1 Administrator None 0 Jun 22 23:10 ./bbb.aud
$ find . -name "*.aud" -mtime -1 -exec ls -l {} \+
-rw-r--r-- 1 Administrator None 0 Jun 24 09:23 ./ccc.aud
--//只有这样理解才是正确的.
--//即使我使用windows下的find,我的方法也是正确的.
D:\tools\cygwin64\home\Administrator\find>D:\tools\linux\usr\local\wbin\date
Thu Jun 24 22:43:10 中国标准时间 2021
D:\tools\cygwin64\home\Administrator\find>ls -ltr
total 0
-rw-rw-rw- 1 user group 0 Jun 22 09:23 aaa.aud
-rw-rw-rw- 1 user group 0 Jun 22 23:10 bbb.aud
-rw-rw-rw- 1 user group 0 Jun 24 09:23 ccc.aud
D:\tools\cygwin64\home\Administrator\find>find -mtime -1
.
.\ccc.aud
D:\tools\cygwin64\home\Administrator\find>find -mtime 1
.\bbb.aud
D:\tools\cygwin64\home\Administrator\find>find -mtime +1
.\aaa.aud
--//后记:如果你仔细看链接https://oracleblog.org/study-note/how-to-calculate-find-mtime/下面的评论也说明一些人没有作出作
--//者的测试.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2778423/ ,如需转载,请注明出处,否则将追究法律责任。