ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ​[20210624]find -mtime +N N -N的时间范围问题.txt

​[20210624]find -mtime +N N -N的时间范围问题.txt

原创 Linux操作系统 作者:lfree 时间:2021-06-25 21:56:12 0 删除 编辑

[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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4014
  • 访问量
    7991226