[20210708]find -mtime +0 0 -0時間問題補充.txt

lfree發表於2021-07-08

[20210708]find -mtime +0 0 -0時間問題補充.txt

--//補充find -mtime +0 0 -0時間的測試,估計很少人這樣寫,實際上大部分人對於find find -mtime +N N -N的理解是錯誤的。
find -mtime +N 表示 小於 <當前時間-(N+1)天 .
find -mtime  N 表示 在  >=當前時間-(N+1)天 <當前時間-(N)天 之間.
find -mtime -N 表示 大於 >=當前時間-(N)天.

--//換一句話+0 0 -0 表示:
find -mtime +0 表示 小於 <當前時間-(1)天 .
find -mtime  0 表示 在  >=當前時間-(1)天 <當前時間-(0)天 之間.
find -mtime -0 表示 大於 >=當前時間-(0)天.

--//為了加強記憶,測試看看:

$ mkdir aaa
$ cd aaa

$ date "+%Y%m%d%H%M.%S.%N";seq -2 1 2 | xargs -IQ  date "+%Y%m%d%H%M.%S" --date='Q seconds'
202107080833.13.286667115
202107080833.11
202107080833.12
202107080833.13
202107080833.14
202107080833.15

--//可以發現排序檔案後中間的時間表示當時執行命令的時間(注意不看年月日),注:可能存在小量的誤差,假設執行很快的情況。
--//如果我在windows下使用cygwin模擬器,執行很慢,就存在這個誤差。

$ seq -2 1 2 | xargs -IQ  date "+%Y%m%d%H%M.%S" --date='1 day ago Q seconds' | xargs -IQ touch -t Q Q ; find . -name "2021*" -mtime +0 -exec ls -ltr {} \+; echo ======  ; ls -ltr ; rm -f 2021*
-rw-r--r-- 1 oracle oinstall 0 Jul  7 08:36 ./202107070836.20
-rw-r--r-- 1 oracle oinstall 0 Jul  7 08:36 ./202107070836.21
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:36:20 202107070836.20
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:36:21 202107070836.21
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:36:22 202107070836.22
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:36:23 202107070836.23
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:36:24 202107070836.24

--//執行時的當前時間是2021-07-08 08:36:22.注意我顯示的日期是--date='1 day ago Q seconds'
--//find . -name "2021*" -mtime +0
--//實際上顯示的是 小於 當前時間-1天的檔案.

--//後面的測試不再說明了,大家自己看.
$ seq -2 1 2 | xargs -IQ  date "+%Y%m%d%H%M.%S" --date='1 day ago Q seconds' | xargs -IQ touch -t Q Q ; find . -name "2021*" -mtime 0 -exec ls -ltr {} \+; echo ======  ; ls -ltr ; rm -f 2021*
-rw-r--r-- 1 oracle oinstall 0 Jul  7 08:38 ./202107070838.24
-rw-r--r-- 1 oracle oinstall 0 Jul  7 08:38 ./202107070838.25
-rw-r--r-- 1 oracle oinstall 0 Jul  7 08:38 ./202107070838.26
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:38:22 202107070838.22
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:38:23 202107070838.23
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:38:24 202107070838.24
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:38:25 202107070838.25
-rw-r--r-- 1 oracle oinstall 0 2021-07-07 08:38:26 202107070838.26
--// 注意日期顯示--date='1 day ago Q seconds'.

$ seq -2 1 2 | xargs -IQ  date "+%Y%m%d%H%M.%S" --date='0 day ago Q seconds' | xargs -IQ touch -t Q Q ; find . -name "2021*" -mtime 0 -exec ls -ltr {} \+; echo ======  ; ls -ltr ; rm -f 2021*
-rw-r--r-- 1 oracle oinstall 0 Jul  8 08:40 ./202107080840.42
-rw-r--r-- 1 oracle oinstall 0 Jul  8 08:40 ./202107080840.43
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:40:42 202107080840.42
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:40:43 202107080840.43
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:40:44 202107080840.44
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:40:45 202107080840.45
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:40:46 202107080840.46
--// 注意日期顯示--date='0 day ago Q seconds'. 輸入--date='Q seconds'.也是一樣的.

$ seq -2 1 2 | xargs -IQ  date "+%Y%m%d%H%M.%S" --date='Q seconds' | xargs -IQ touch -t Q Q ; find . -name "2021*" -mtime -0 -exec ls -ltr {} \+; echo ======  ; ls -ltr ; rm -f 2021*
-rw-r--r-- 1 oracle oinstall 0 Jul  8 08:42 ./202107080842.23
-rw-r--r-- 1 oracle oinstall 0 Jul  8  2021 ./202107080842.24
-rw-r--r-- 1 oracle oinstall 0 Jul  8  2021 ./202107080842.25
======
total 0
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:42:21 202107080842.21
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:42:22 202107080842.22
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:42:23 202107080842.23
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:42:24 202107080842.24
-rw-r--r-- 1 oracle oinstall 0 2021-07-08 08:42:25 202107080842.25


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2780229/,如需轉載,請註明出處,否則將追究法律責任。

相關文章