徹底搞明白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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- find命令-mtime引數理解
- 徹底搞明白Spring中的自動裝配和AutowiredSpring
- 這一次,徹底幫你搞明白 ImageView ScaleTypeView
- find 命令的引數詳解
- Nginx常用配置引數的含義Nginx
- plsql下nocopy引數的含義SQL
- linux,mtime引數的理解Linux
- 【JavaScript】徹底明白this在函式中的指向JavaScript函式
- php引數3個點的含義PHP
- Linux - find命令搭配atime/ctime/mtime的寫法Linux
- mysqldump --master-data=2引數的含義MySqlAST
- 安裝oracle時核心引數的含義Oracle
- GoldenGate 基本引數含義Go
- Python 中 key 引數的含義及用法Python
- 安裝oracle時引數shmmax,shmall的含義OracleHMM
- CLUSTER_DATABASE_INSTANCES 引數的真正含義Database
- Python中key引數的含義及用法Python
- 【JS基礎】從零開始帶你理解JavaScript閉包--我是如何徹底搞明白閉包的JSJavaScript
- 前端20個靈魂拷問 徹底搞明白你就是中級前端工程師 【下篇】前端工程師
- 前端20個靈魂拷問 徹底搞明白你就是中級前端工程師 【中篇】前端工程師
- Deno 正式釋出,徹底弄明白和 node 的區別
- Linux - find命令常用引數與示例Linux
- 每天一個 Linux 命令(22):find 命令的引數詳解Linux
- 30分鐘,讓你徹底明白Promise原理Promise
- Linux上shmmax引數的設定及含義LinuxHMM
- histb 引導核心 boot_cmd 引數含義boot
- CBO,ORACLE,隱含引數,_sort_elimination_cost_ratio的含義Oracle
- 一文徹底搞懂 Javascript 的 this(含 ES6+)JavaScript
- 部分Oracle 配置檔案引數含義Oracle
- SAP Fiori 應用 url 中的 DraftUUID 引數的含義RaftUI
- 一篇文章讓你徹底搞清楚Python中self的含義Python
- Linux上shmmax引數的設定及含義(轉)LinuxHMM
- 這麼講執行緒池,徹底明白了!執行緒
- oracle中用Create Table建立表時,Storage中引數的含義!Oracle
- Oracle 執行計劃中一些引數的含義Oracle
- 隱含引數的查詢
- Oracle的隱含引數(zt)Oracle
- 徹底明白ip地址,區分localhost、127.0.0.1和0.0.0.0localhost127.0.0.1