ind -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.注意我顯示的日期是--dawww.diuxie.comte='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