描述:
Linux作業系統的學習其基礎則為熟悉使用各種基礎的操作命令,命令雖然很多,但對於初學者來說,掌握的常見命令卻為數不多。例如:檔案操作命令(file,mkdir,grep,diff,find,cat,ls等),系統安全命令(passwd,who,su,chomd,chown,umask等),系統管理命令(kill,top,free,at等),網路操作命令(ifconfig,ip,ping,ftp等),還有一些其他的常用命令(man,tar,unzip,gunzip等),主要就是這幾個板塊,其中隸屬於檔案操作命令下的find,其擁有強大的索引功能,可謂linux中的“明星”,值得剖析剖析。
★在此使用的是CentOS6.5版本,首先在工作目錄下建立一個名為“cmd1和cmd2”的子目錄,並在該目錄下建立幾個子檔案,便於演練完成時統一刪除釋放資源。
※與其他常用的檔案索引命令which/whereis/locate等不同,find的強大之處在於其索引方式的多樣化,這點是其他索引命令不能企及的。
1.find(find -print):列印目前的目錄下的目錄列表和檔案名稱。
2.find -name[檔案名稱]:根據檔案名稱或Regex進行匹配索引,其中name可替換為iname(iname為索引的檔案名稱忽略大小寫)。註:在linux中檔案的尾碼,如:.c,.txt等都是檔案名稱,與windows下用以表示檔案類型不同。
※可以看到,對於目前的目錄下有的話直接列印;若沒有則什麼也不顯示,說明未找到。
3.find -name -a/-o/-not[檔案名稱]:-a表示且的關係,-o表示或的關係,-not表示除此以外的檔案(該-not的想法來自德摩根定律)
4.find -path:將檔案的路徑名作為參數進行索引。
5.find -atime/ctime/mtime -[參數]:索引參數時間內未訪問/訪問過的檔案,參數為負表示訪問,為正表示未訪問。atime表示最近一次訪問,mtime表示最近一次修改,ctime最近一次屬性修改,time表示的天,也可以換成時分秒等。
★索引目前的目錄下5天內已訪問的檔案
6.find -type -[參數]:根據檔案類型索引。f,d,l,b,c,p,s分別對應了普通檔案、目錄檔案、連結檔案、塊裝置檔案、字元裝置檔案、管道檔案、通訊端檔案。
7.find -size [參數]:根據檔案大小進行索引。例如:2M表示等於2M大小,-2M表示小於2M,+2M表示大於2M大小。
8.find -perm [參數]:根據檔案的許可權進行索引。比如:222則為尋找目前的目錄下許可權只為寫的檔案,-222則為所有類別使用者必須滿足寫入權限,+222則為只要own,group,other中有滿足寫入權限的即可。
9.find -nouser -a -nogroup:尋找既沒有屬主,也沒有屬組的檔案。★這類檔案通常為侵入系統的病毒檔案(野檔案),對於維護系統安全性尤為重要。通常在根目錄下尋找find / -nouser -a -nogroup。
10.find -maxdepth/mindepth [參數]:基於目前的目錄下的深度索引。
例如:find . -maxdepth 1 -type f:索引目前的目錄下深度為1的普通檔案,可和上述命令組合使用,若為2則為向下索引2級(深度為2)的普通檔案。
※cmd3為cmd2的子目錄,cmd4為cmd3的子目錄。
11.find -newer [檔案名稱]:尋找在此檔案之後建立的檔案。
※可以看到,尋找到了在test.1後建立的test.2檔案。
12.當執行完find操作時,其後可跟進後續執行命令。
常用的有-ls:尋找後用於列印顯示,-ok [commend]:尋找到用以詢問是否執行該檔案,-exec [commend]:跳過詢問,直接執行尋找到的檔案。
Learning Tips:
熟練掌握Linux中常用的基礎操作命令,在後續進行系統編程,跟進項目,或者系統維護時這些命令用起來得心應手,可能前期有些陌生,不過大量練習經常使用,加上tap鍵的使用,這都不是事兒。。。