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的文件。