徹底搞明白find命令的-mtime引數的含義
以前一直沒有弄明白find的 -mtime引數的真正含義
剛好今天跟一個同學聊起這個事
我在寫shell指令碼的時候,定時刪除一些檔案的時候,也經常用得到-mtime這個引數,所以打算好好看看,把它弄明白一下
man find裡的解釋:
-mtime n
File’s data was last modified n*24 hours ago. See the comments for -atime to understand how
rounding affects the interpretation of file modification times.
-atime n
File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the
file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have
been accessed at least two days ago.
find $HOME -mtime 0
Search for files in your home directory which have been modified in the last twenty-four hours. This
command works this way because the time since each file was last modified is divided by 24 hours and any
remainder is discarded. That means that to match -mtime 0, a file will have to have a modification in
the past which is less than 24 hours ago.
以下的檔案列表用來做實驗
[oracle@goolen arch]$ ll -h
total 1.1G
-rw-r----- 1 oracle oinstall 40M Apr 29 22:00 archive_1_53_844522225.arc
-rw-r----- 1 oracle oinstall 45M Apr 29 22:29 archive_1_54_844522225.arc
-rw-r----- 1 oracle oinstall 38M Apr 30 16:30 archive_1_55_844522225.arc
-rw-r----- 1 oracle oinstall 38M Apr 30 16:35 archive_1_56_844522225.arc
-rw-r----- 1 oracle oinstall 42M Apr 30 22:00 archive_1_57_844522225.arc
-rw-r----- 1 oracle oinstall 45M Apr 30 22:36 archive_1_58_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 1 14:00 archive_1_59_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 1 22:00 archive_1_60_844522225.arc
-rw-r----- 1 oracle oinstall 41M May 1 22:37 archive_1_61_844522225.arc
-rw-r----- 1 oracle oinstall 41M May 2 22:00 archive_1_62_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 2 22:38 archive_1_63_844522225.arc
-rw-r----- 1 oracle oinstall 42M May 3 06:00 archive_1_64_844522225.arc
-rw-r----- 1 oracle oinstall 40M May 3 14:09 archive_1_65_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 3 22:39 archive_1_66_844522225.arc
-rw-r----- 1 oracle oinstall 39M May 4 06:00 archive_1_67_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 4 17:00 archive_1_68_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 5 08:10 archive_1_69_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 5 10:28 archive_1_70_844522225.arc
-rw-r----- 1 oracle oinstall 6.7M May 5 14:57 archive_1_71_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 5 22:00 archive_1_72_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 6 08:28 archive_1_73_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 6 14:00 archive_1_74_844522225.arc
-rw-r----- 1 oracle oinstall 39M May 6 22:00 archive_1_75_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 7 08:29 archive_1_76_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 7 22:00 archive_1_77_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 8 05:00 archive_1_78_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 8 09:00 archive_1_79_844522225.arc
[oracle@goolen arch]$ date
Thu May 8 16:29:09 CST 2014
++現在是 5月8號 16:30
+++我們先來看一下 -mtime +1 這個引數的輸出結果:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime +1 -exec ls -l {} \;
-rw-r----- 1 oracle oinstall 41009664 Apr 29 22:00 ./archive_1_53_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 Apr 29 22:29 ./archive_1_54_844522225.arc
-rw-r----- 1 oracle oinstall 39376384 Apr 30 16:30 ./archive_1_55_844522225.arc
-rw-r----- 1 oracle oinstall 39756800 Apr 30 16:35 ./archive_1_56_844522225.arc
-rw-r----- 1 oracle oinstall 43597312 Apr 30 22:00 ./archive_1_57_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 Apr 30 22:36 ./archive_1_58_844522225.arc
-rw-r----- 1 oracle oinstall 39395328 May 1 14:00 ./archive_1_59_844522225.arc
-rw-r----- 1 oracle oinstall 39623168 May 1 22:00 ./archive_1_60_844522225.arc
-rw-r----- 1 oracle oinstall 42701824 May 1 22:37 ./archive_1_61_844522225.arc
-rw-r----- 1 oracle oinstall 42967040 May 2 22:00 ./archive_1_62_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 May 2 22:38 ./archive_1_63_844522225.arc
-rw-r----- 1 oracle oinstall 43959808 May 3 06:00 ./archive_1_64_844522225.arc
-rw-r----- 1 oracle oinstall 41638400 May 3 14:09 ./archive_1_65_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 May 3 22:39 ./archive_1_66_844522225.arc
-rw-r----- 1 oracle oinstall 39922176 May 4 06:00 ./archive_1_67_844522225.arc
-rw-r----- 1 oracle oinstall 39352832 May 4 17:00 ./archive_1_68_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 May 5 08:10 ./archive_1_69_844522225.arc
-rw-r----- 1 oracle oinstall 46373888 May 5 10:28 ./archive_1_70_844522225.arc
-rw-r----- 1 oracle oinstall 7001600 May 5 14:57 ./archive_1_71_844522225.arc
-rw-r----- 1 oracle oinstall 39364608 May 5 22:00 ./archive_1_72_844522225.arc
-rw-r----- 1 oracle oinstall 39477248 May 6 08:28 ./archive_1_73_844522225.arc
-rw-r----- 1 oracle oinstall 39361024 May 6 14:00 ./archive_1_74_844522225.arc
+++命令返回的檔案列表為 archive_1_53_844522225.arc - archive_1_74_844522225.arc
從時間上來看,就是截至到5月6號 14點的
5月6號 還有一個檔案是晚上22點生成的,輸出結果裡沒有
-rw-r----- 1 oracle oinstall 39M May 6 22:00 archive_1_75_844522225.arc
按我以前的理解(錯誤的),-mtime +1 ,輸出的應該是5月7號之前的所有檔案,但是這裡卻沒有輸出6號晚上22點生成的archive_1_75_844522225.arc這個檔案
正確的解釋:
-mtime+1 表示檔案修改時間為大於1天的檔案,即距離當前時間2天(48小時)之外的檔案
這也能解釋了,為什麼6號22點生成的這個檔案為什麼沒有輸出出來
這裡-mtime +1 為什麼是48小時以外,而不是24小時以外呢,因為n只能是整數,比1大的下一個整數是2,所以是48小時以外的
下面來看 -mtime 1的輸出結果:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime 1 -exec ls -l {} \;
-rw-r----- 1 oracle oinstall 40737280 May 6 22:00 ./archive_1_75_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 May 7 08:29 ./archive_1_76_844522225.arc
結果輸出為6號22點生成的archive_1_75_844522225.arc 和7號8點29生成的archive_1_76_844522225.arc 這兩個檔案
解釋:
-mtime 1 表示檔案修改時間距離當前為1天的檔案,即距離當前時間1天(24小時-48小時)的檔案
下面來看 -mtime 0 的輸出結果:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime 0 -exec ls -l {} \;
-rw-r----- 1 oracle oinstall 39303680 May 7 22:00 ./archive_1_77_844522225.arc
-rw-r----- 1 oracle oinstall 39483392 May 8 05:00 ./archive_1_78_844522225.arc
-rw-r----- 1 oracle oinstall 39208448 May 8 09:00 ./archive_1_79_844522225.arc
解釋:
-mtime 0 表示檔案修改時間距離當前為0天的檔案,即距離當前時間不到1天(24小時)以內的檔案
下面看-mtime -1 的輸出結果:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime -1 -exec ls -l {} \;
-rw-r----- 1 oracle oinstall 39303680 May 7 22:00 ./archive_1_77_844522225.arc
-rw-r----- 1 oracle oinstall 39483392 May 8 05:00 ./archive_1_78_844522225.arc
-rw-r----- 1 oracle oinstall 39208448 May 8 09:00 ./archive_1_79_844522225.arc
解釋:
-mtime -1 表示檔案修改時間為小於1天的檔案,即距離當前時間1天(24小時)之內的檔案
剛好今天跟一個同學聊起這個事
我在寫shell指令碼的時候,定時刪除一些檔案的時候,也經常用得到-mtime這個引數,所以打算好好看看,把它弄明白一下
man find裡的解釋:
-mtime n
File’s data was last modified n*24 hours ago. See the comments for -atime to understand how
rounding affects the interpretation of file modification times.
-atime n
File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the
file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have
been accessed at least two days ago.
find $HOME -mtime 0
Search for files in your home directory which have been modified in the last twenty-four hours. This
command works this way because the time since each file was last modified is divided by 24 hours and any
remainder is discarded. That means that to match -mtime 0, a file will have to have a modification in
the past which is less than 24 hours ago.
以下的檔案列表用來做實驗
[oracle@goolen arch]$ ll -h
total 1.1G
-rw-r----- 1 oracle oinstall 40M Apr 29 22:00 archive_1_53_844522225.arc
-rw-r----- 1 oracle oinstall 45M Apr 29 22:29 archive_1_54_844522225.arc
-rw-r----- 1 oracle oinstall 38M Apr 30 16:30 archive_1_55_844522225.arc
-rw-r----- 1 oracle oinstall 38M Apr 30 16:35 archive_1_56_844522225.arc
-rw-r----- 1 oracle oinstall 42M Apr 30 22:00 archive_1_57_844522225.arc
-rw-r----- 1 oracle oinstall 45M Apr 30 22:36 archive_1_58_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 1 14:00 archive_1_59_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 1 22:00 archive_1_60_844522225.arc
-rw-r----- 1 oracle oinstall 41M May 1 22:37 archive_1_61_844522225.arc
-rw-r----- 1 oracle oinstall 41M May 2 22:00 archive_1_62_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 2 22:38 archive_1_63_844522225.arc
-rw-r----- 1 oracle oinstall 42M May 3 06:00 archive_1_64_844522225.arc
-rw-r----- 1 oracle oinstall 40M May 3 14:09 archive_1_65_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 3 22:39 archive_1_66_844522225.arc
-rw-r----- 1 oracle oinstall 39M May 4 06:00 archive_1_67_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 4 17:00 archive_1_68_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 5 08:10 archive_1_69_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 5 10:28 archive_1_70_844522225.arc
-rw-r----- 1 oracle oinstall 6.7M May 5 14:57 archive_1_71_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 5 22:00 archive_1_72_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 6 08:28 archive_1_73_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 6 14:00 archive_1_74_844522225.arc
-rw-r----- 1 oracle oinstall 39M May 6 22:00 archive_1_75_844522225.arc
-rw-r----- 1 oracle oinstall 45M May 7 08:29 archive_1_76_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 7 22:00 archive_1_77_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 8 05:00 archive_1_78_844522225.arc
-rw-r----- 1 oracle oinstall 38M May 8 09:00 archive_1_79_844522225.arc
[oracle@goolen arch]$ date
Thu May 8 16:29:09 CST 2014
++現在是 5月8號 16:30
+++我們先來看一下 -mtime +1 這個引數的輸出結果:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime +1 -exec ls -l {} \;
-rw-r----- 1 oracle oinstall 41009664 Apr 29 22:00 ./archive_1_53_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 Apr 29 22:29 ./archive_1_54_844522225.arc
-rw-r----- 1 oracle oinstall 39376384 Apr 30 16:30 ./archive_1_55_844522225.arc
-rw-r----- 1 oracle oinstall 39756800 Apr 30 16:35 ./archive_1_56_844522225.arc
-rw-r----- 1 oracle oinstall 43597312 Apr 30 22:00 ./archive_1_57_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 Apr 30 22:36 ./archive_1_58_844522225.arc
-rw-r----- 1 oracle oinstall 39395328 May 1 14:00 ./archive_1_59_844522225.arc
-rw-r----- 1 oracle oinstall 39623168 May 1 22:00 ./archive_1_60_844522225.arc
-rw-r----- 1 oracle oinstall 42701824 May 1 22:37 ./archive_1_61_844522225.arc
-rw-r----- 1 oracle oinstall 42967040 May 2 22:00 ./archive_1_62_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 May 2 22:38 ./archive_1_63_844522225.arc
-rw-r----- 1 oracle oinstall 43959808 May 3 06:00 ./archive_1_64_844522225.arc
-rw-r----- 1 oracle oinstall 41638400 May 3 14:09 ./archive_1_65_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 May 3 22:39 ./archive_1_66_844522225.arc
-rw-r----- 1 oracle oinstall 39922176 May 4 06:00 ./archive_1_67_844522225.arc
-rw-r----- 1 oracle oinstall 39352832 May 4 17:00 ./archive_1_68_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 May 5 08:10 ./archive_1_69_844522225.arc
-rw-r----- 1 oracle oinstall 46373888 May 5 10:28 ./archive_1_70_844522225.arc
-rw-r----- 1 oracle oinstall 7001600 May 5 14:57 ./archive_1_71_844522225.arc
-rw-r----- 1 oracle oinstall 39364608 May 5 22:00 ./archive_1_72_844522225.arc
-rw-r----- 1 oracle oinstall 39477248 May 6 08:28 ./archive_1_73_844522225.arc
-rw-r----- 1 oracle oinstall 39361024 May 6 14:00 ./archive_1_74_844522225.arc
+++命令返回的檔案列表為 archive_1_53_844522225.arc - archive_1_74_844522225.arc
從時間上來看,就是截至到5月6號 14點的
5月6號 還有一個檔案是晚上22點生成的,輸出結果裡沒有
-rw-r----- 1 oracle oinstall 39M May 6 22:00 archive_1_75_844522225.arc
按我以前的理解(錯誤的),-mtime +1 ,輸出的應該是5月7號之前的所有檔案,但是這裡卻沒有輸出6號晚上22點生成的archive_1_75_844522225.arc這個檔案
正確的解釋:
-mtime+1 表示檔案修改時間為大於1天的檔案,即距離當前時間2天(48小時)之外的檔案
這也能解釋了,為什麼6號22點生成的這個檔案為什麼沒有輸出出來
這裡-mtime +1 為什麼是48小時以外,而不是24小時以外呢,因為n只能是整數,比1大的下一個整數是2,所以是48小時以外的
下面來看 -mtime 1的輸出結果:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime 1 -exec ls -l {} \;
-rw-r----- 1 oracle oinstall 40737280 May 6 22:00 ./archive_1_75_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 May 7 08:29 ./archive_1_76_844522225.arc
結果輸出為6號22點生成的archive_1_75_844522225.arc 和7號8點29生成的archive_1_76_844522225.arc 這兩個檔案
解釋:
-mtime 1 表示檔案修改時間距離當前為1天的檔案,即距離當前時間1天(24小時-48小時)的檔案
下面來看 -mtime 0 的輸出結果:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime 0 -exec ls -l {} \;
-rw-r----- 1 oracle oinstall 39303680 May 7 22:00 ./archive_1_77_844522225.arc
-rw-r----- 1 oracle oinstall 39483392 May 8 05:00 ./archive_1_78_844522225.arc
-rw-r----- 1 oracle oinstall 39208448 May 8 09:00 ./archive_1_79_844522225.arc
解釋:
-mtime 0 表示檔案修改時間距離當前為0天的檔案,即距離當前時間不到1天(24小時)以內的檔案
下面看-mtime -1 的輸出結果:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime -1 -exec ls -l {} \;
-rw-r----- 1 oracle oinstall 39303680 May 7 22:00 ./archive_1_77_844522225.arc
-rw-r----- 1 oracle oinstall 39483392 May 8 05:00 ./archive_1_78_844522225.arc
-rw-r----- 1 oracle oinstall 39208448 May 8 09:00 ./archive_1_79_844522225.arc
解釋:
-mtime -1 表示檔案修改時間為小於1天的檔案,即距離當前時間1天(24小時)之內的檔案
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22039464/viewspace-1754375/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 徹底搞明白Spring中的自動裝配和AutowiredSpring
- 這一次,徹底幫你搞明白 ImageView ScaleTypeView
- find 命令的引數詳解
- linux,mtime引數的理解Linux
- php引數3個點的含義PHP
- 【JavaScript】徹底明白this在函式中的指向JavaScript函式
- Python 中 key 引數的含義及用法Python
- Python中key引數的含義及用法Python
- 前端20個靈魂拷問 徹底搞明白你就是中級前端工程師 【下篇】前端工程師
- 前端20個靈魂拷問 徹底搞明白你就是中級前端工程師 【中篇】前端工程師
- SAP Fiori 應用 url 中的 DraftUUID 引數的含義RaftUI
- 【JS基礎】從零開始帶你理解JavaScript閉包--我是如何徹底搞明白閉包的JSJavaScript
- Deno 正式釋出,徹底弄明白和 node 的區別
- histb 引導核心 boot_cmd 引數含義boot
- 一文徹底搞懂 Javascript 的 this(含 ES6+)JavaScript
- [20191204]hugepage相關引數含義.txt
- [20220913]hugepage相關引數含義.txt
- 命令注入-命令的連線符【‘&’‘&&’‘||’‘|’】的含義及其用法
- SAP Fiori Launchpad url 引數 sap-app-origin-hint 的含義APP
- 徹底明白ip地址,區分localhost、127.0.0.1和0.0.0.0localhost127.0.0.1
- 這麼講執行緒池,徹底明白了!執行緒
- 徹底理解Linux的DISPLAY變數的作用Linux變數
- Linux命令:atime,mtime,ctimeLinux
- [20210624]find -mtime +N N -N的時間範圍問題.txt
- 引數的定義和引數的傳遞
- SpringCloud | 通過電商業務場景讓你徹底明白SpringCloud核心元件的底層原理SpringGCCloud元件
- 記一下rgb螢幕時序引數對應的含義
- Linux各種變數的含義Linux變數
- git merge合併程式碼時各引數含義Git
- YUI TreeView搞明白了UIView
- [高頻面試]解釋執行緒池的各個引數含義面試執行緒
- 關於 SAP UI5 引數 $$updateGroupId 前面兩個 $ 符號的含義UI符號
- Shell命令列中的特殊字元及其轉義(去除特殊含義)命令列字元
- 電腦顯示器各項引數的含義科普大全:買液晶顯示器主要看哪些引數?
- linux top命令欄位含義Linux
- [精]--這一次,讓你徹底明白Java的值傳遞和引用傳遞!Java
- Python函式每日一講 - 一文讓你徹底明白hasattr函式的使用Python函式
- Python函式每日一講 - 一文徹底讓你明白hash函式的使用Python函式
- 徹底理解JavaScript中的thisJavaScript