歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> LInux時間參數與find命令

LInux時間參數與find命令

日期:2017/3/1 11:50:45   编辑:關於Linux

1.Linux時間參數

LInux下的每個檔案都會記錄著許多的時間參數,其中有三個主要的變動時間,分別是mtime,ctime,atime。那麼這三個時間參數又代表著什麼樣的意義呢?怎麼可以看得到它們?下面就來介紹一下。

首先我們可以用一條命令來得到一個文件的某些參數:

\

我們對當前文件夾下的一個clean文件執行了stat命令,用來查看這個文件的一些信息。可以看到下面列出來的Access,Modify,Change這三行就是我們的三個時間了,分別為atime,mtime和ctime。

modification time (mtime):
該檔案的內容數據變更時,就會更新這個時間!內容數據指的是檔案的內容,而不是檔案
屬性或權限喔!

status time (ctime):
該檔案的狀態改變時,就會更新這個時間,舉例來說,像是權限與屬性被更改
了,都會更新這個時間啊。

access time (atime):
當該檔案的內容被取用時,就會更新這個讀取時間 (access)。舉例來說,我們使用 cat 去讀
取 /etc/man.config , 就會更新該檔案的atime 了。

然後我們再來對剛剛那個文件ls一下:

\

可以看到,在默認的情況下,ls提示的信息中的時間其實就是mtime啦!也就這這個文件上次被更動的時間。

文件的時間是很重要的參數,因為如果文件的時間有錯誤的話,可能會造成程序不能正常工作哦!比如編譯文件make命令的執行就與具體文件的時間參數有關哦。更具體的信息可以自行去查看make命令的相關知識。總之這裡你需要知道的是時間參數很重要,不能出錯。

比如我們萬一發現了一個來自未來的文件,那麼該如何讓這個文件的時間變為現在呢?那就是用touch命令了:

\

(ps:一個文件會是來自未來嗎?會!比如因為某些錯誤的設置,你的系統時間快了一些,而在此期間你建立了一些文件後,又將系統時間改為了正確的時間,那麼這些文件不就是來自未來了嗎?)

最後這裡要說的是,我們平常用的比較多的時間也就是這個mtime了,因為我們關心的常常是這個文件是什麼時候被改動的。

2.find命令

Linux下有一條相當優秀的查找命令find。但是不太常用,因為它有兩個缺點,一速度慢,二費硬盤。通常情況下,我們都是先使用whereis

或者locate來檢查,如果真的找不到了,才用find來查找。因為whereis和locate是利用數據庫來搜尋數據,而find卻是實打實的搜尋硬盤了。但這也成為了它最大的優點,只要有,沒有它找不到的(前提是擁有相應的權限)!下面只講一下find的用法。

Linux下find命令在目錄結構中搜索文件,並執行指定的操作。Linux下find命令提供了相當多的查找條件,功能很強大大。由於find具有強大的功能,所以它的選項也很多,其中大部分選項都值得我們花時間來了解一一下。即使系統中含有網絡文文件系統( NFS),find命令在該文文件系統中同樣有效,只你具有相應的權限。 在運行一個非常消耗資源的find命令時,很多人都傾向於把它放在後台執行,因為遍歷一個大的文件系統可能會花費很長的時間(這裡是指30G字節以上的文件系統)。

1.命令的格式

find pathname -options [-print -exec -ok ...]

2.命令功能

用於在文件樹種查找文件,並作出相應的處理(可能訪問磁盤)

3.命令參數

pathname:find命令所查找的目錄路徑。例如用 . 來表示當前目錄,用/來表示根目錄等。

\

執行這條命令之後,find就會搜尋到當前目錄下與clean關鍵字有相關的文件。

-print:find命令將匹配的文件輸出到標准輸出。

\

當然默認的輸出也是標准輸出了。

-exec:find命令對匹配的文件執行該參數所給出的shell命令。

\

上面的例子中,find命令匹配到了當前目錄下的所有普通文件,並在-exec選項中使用ls -l命令將它們列出。

-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。

\

4.命令選項:

-name : 按照文件名查找文件。

\

-perm :按照文件權限來查找文件。

\

-prune : 使用這一選項可以使find不在當前指定的目錄中查找,如果同時使用-depth選項,那麼-prune將被find命令忽略(-depth就在下邊講到)。

\

-user : 按照文件屬主來查找文件。

\

-group :按照文件所屬的組來查找文件。

\

-mtime -n +n :按照文件的更改時間來查找文件,-n表示文件更改時間距現在n天以內,+n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime選項,但它們都和-mtime 選項用法相同。

\

\

-nogroup :查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。

\

-nouser :查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。

\

-newer file1 !file2 :查找更改時間比文件file1新但比文件file2舊的文件。

\

-type :查找某一類型的文件,諸如:

b - 塊設備文件。

d - 目錄。

c - 字符設備文件。

p - 管道文件。

l - 符號鏈接文件。

f - 普通文件

\

-size n :[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計。

\

-depth :在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找。

\

-fstype :查找位於某一類型文件系統中的文件,這些文件系統類型通常可以在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息。

\

-mount :在查找文件時不跨越文件系統mount點。

\

-follow :如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。

\

-cpio :對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。

\

另外還有幾個小例子

1. -按時間來查找文件,-n指n天以內,+n指n天以前:在/logs目錄中查找更改時間在5天以前的文件並刪除它們:

\

2. Linux用find命令查找文件大小為XX的文件的辦法

例如:一個文件4096個字節,可以這樣:

\

即查找大於4095字節小於4097字節的文件。其中的c也可以換位k,代表kB:

\

代表查找當前目錄下大於0k小於2k的文件。

Copyright © Linux教程網 All Rights Reserved