歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> Linux常用命令之 查找命令 find —— 細說 -atime,-mtime,-ctime

Linux常用命令之 查找命令 find —— 細說 -atime,-mtime,-ctime

日期:2017/3/2 17:14:30   编辑:Linux基礎知識

  我們知道 Linux裡面一切皆文件 ,那麼我們能否查看一個文件是何時創建的呢?答案是否定的。那我們可以知道些文件關於時間的什麼信息呢?那就不得不說文件狀態的三個時間了,它們分別是 -atime, -ctime 和 -mtime。

  先讓我們來看一個Linux下的文件信息:

  我們可以從中看到,關於時間的信息有三個:最近訪問時間 access time (-atime)、最近更改時間 modify time (-mtime) 和 最近狀態改動時間 change time(-ctime),當然我們也看到了創建時間那一項為空白,也證實了Linux系統下是無法查看文件的創建時間的。

  下面具體解釋這三個時間:

  atime : 它代表著最近一次訪問文件的時間,顯示一個文件的內容或者運行一個shell腳本會更新文件的atime。可用ls -lu命令查看。有一個要注意的就是,在kernel版本2.6.30之前,linux的核心開發人員針對Ext3/Ext4文件系統的性能進行了討論,其中包括atime。在kernel 2.6.30之前,文件系統中默認會及時的更新atime,而在此之後的版本裡,只有發生以下三種情況之一才會更新atime

    1.   將分區mount的掛載的時候指定采用非relatime方式
    2.   atime小於ctime或者小於mtime的時候
    3.   本次的access time和上次的atime超過24個小時

  mtime : 它代表著最近一次文件內容被修改的時間。可用ls -l 命令查看。

  ctime : 它代表著最近一次文件狀態改變的時間 ,是status change time,是在寫入文件、更改所有者、權限或鏈接設置時隨 Inode 的內容更改而更改,即文件狀態最後一次被改變的時間。可用ls -lc 命令查看。

演示一下命令的運行結果:

  

 現在來看一下查看文件之後atime有什麼變化

   

 可以看到,在執行查看命令cat之後,文件的atime進行了更新。那如果對文件內容進行了更改呢?

   

  在更改了文件內容之後,在對文件的詳細信息進行查看,對比之後我們可以看到,mtine和ctime都改變了,那這意味著mtime和ctime是一樣的麼?前面已經說過,ctime是指 inode 的改變。那既然我們對文件的內容進行了更改,那它的mtime已經改變,所以ctime也就會改變咯。也就是說只要mtime改變,ctime就一定會改變。那怎樣使得ctime改變而其他不變呢?我們可以通過改變文件的權限、用戶、所屬組等來實現。下面舉例:

   

  當然,我們既然可以查看當前的atime、mtime、ctime,那肯定也可以查看幾天前或者幾天之內被改過或者訪問過的文件。Linux為我們提供了一個簡便的查詢方式,那就是 +n 和 -n。下面以 -mtime 舉例說明:

  -mtime n : n為數字,意思為在n天之前的“一天之內”被更改過內容的文件

  -mtime +n : 列出在n天之前(不含n天本身)被更改過內容的文件名

  -mtime -n : 列出在n天之內(含n天本身)被更改過內容的文件名

例如:將系統24小時內更改過內容的檔案列出 。

find / -mtime 0

  那麼,找 “5天之內被更改過的檔案名” 就是 find / -mtime -5 ,找“5天前的那一天被更改過的檔案名” 就是 find / -mtime 5 ,找“5天之前被更改過的檔案名” 就是 find / -mtime +5。我們可以看出有沒有 “+,-”的差別是很大的。下面用圖來說明一下:

              

  由這個時光軸我們可以知道,最右邊為當前時,+5 代表大於等於 6 天前的檔案名, -5 代表小於等於 5 天內的檔案名,5 則是代表 5-6 那一天的檔案名。

Copyright © Linux教程網 All Rights Reserved