Linux - find命令搭配atime/ctime/mtime的寫法

襲冷發表於2014-03-30
一、關於
    find可謂是aix/linux上使用較多的維護用命令,但很多時候需要用到針對時間的搜尋。本文主要對find中搭配atime、ctime和mtime的各種引數進行介紹。

二、說明
    atime:訪問時間(access time),指的是檔案最後被讀取的時間,可以使用touch命令更改為當前時間;
    ctime:變更時間(change time),指的是檔案本身最後被變更的時間,變更動作可以使chmod、chgrp、mv等等;
    mtime:修改時間(modify time),指的是檔案內容最後被修改的時間,修改動作可以使echo重定向、vi等等。

    以下例子應該很容易理解上述三個時間:某使用者在2013年1月5日00:00:00時,在/home下輸入ping www.baidu.com > ping.log;5秒鐘後,該使用者使用ctrl+C強制關閉該命令;5秒鐘後,使用cat ping.log檢視。則ping.log的ctime為2013-01-05 00:00:00;mtime為2013-01-05 00:00:05;atime為2013-01-05 00:00:10。

    這三個引數理解後,我們就可以使用find找到某個時刻進行過某類操作的檔案集合。
            find . {-atime/-ctime/-mtime/-amin/-cmin/-mmin} [-/+]num
        第一個引數 . ,代表當前目錄,如果是其他目錄,可以輸入絕對目錄和相對目錄位置;
        第二個引數分兩部分,前面字母a、c、m分別代表訪問、變更、修改,後面time為日期,min為分鐘,注意只能以這兩個作為單位;
        第三個引數為量,其中不帶符號表示符合該數量的,帶-表示符合該數量以後的,帶+表示符合該數量以前的。

三、注意
    find中對於時間的推算均為:
         1、到......為止用+號,從......開始用-號,一個時間單位內的不帶符號;
         2、數字代表往前偏移量;
         3、當前到往後的一個時間單位為基準0,如 -atime 0 則表示今天的24小時;-0就是下限單位;+0就是上限單位。

四、舉例
    假設當前時間是2013年1月5日00:00:00分,則:
        1、尋找2013年1月5日00:00:00到2013年1月5日23:59:59被訪問過的檔案:時間單位是day,查詢單位時間內的不帶符號,當前無往前偏移,因此查詢語句為:
            find . -atime 0
        2、尋找2013年1月4日23:50:00到2013年1月4日23:55:00被修改過的檔案:時間單位是min,下限從當前往前偏移10min,上限從當前往前偏移5min,因此查詢語句為:
            find . -mmin -10 -mmin +5

五、參考

    http://www.2cto.com/os/201301/182719.html

 

 

相關文章