前言
Linux的基本特點之一是一切皆文件,在系統管理過程中難免會需要查找特定類型的文件,那么問題來了:如何進行有效且準確的查找呢?本文將對Linux系統中的文件查找工具及用法進行詳細講解。
常用工具對比
常用的文件查找工具主要有locate(非實時查找)和find(實時查找)。locate查找依賴于索引,而索引構建相當占用資源,索引的創建是在系統空閑時由系統自動進行(每天任務),手動進行創建則可使用updatedb命令,查找速度快但結果非精確,即為模糊查找。而find相對于locate而言,是遍歷所有文件進行條件匹配,查找速度慢但結果精確,即為精準查找。簡言之,對于實際生產環境,find(實時查找)無疑是最有效的文件查找工具。
find的用法
命令格式:
find [options] [查找路徑] [查找條件] [處理動作]
查找路徑:默認為當前目錄
查找條件:默認為指定路徑下的所有文件
處理動作:默認為顯示至屏幕
條件查找
-name "文件名稱":支持使用globbing字符 *:任意長度任意字符 ?:任意單個字符 []:范圍內任意字符 [^]:范圍外任意字符 -iname "文件名稱":查找時忽略字符大小寫 -user USERNAME: 根據文件的屬主查找 -group GRPNAME: 根據文件的屬組查找 -uid UID:根據用戶UID查找 -gid GID:根據用戶GID查找 -nouser: 查找沒有屬主的文件 -nogroup: 查找沒有屬組的文件
組合條件查找
-a:與,同時滿足 -o:或,滿足一個即可 -not:!非,條件取反
文件類型查找
-type TYPE:根據文件類型查找 f:普通文件 d:目錄文件 l:符號鏈接 b:塊設備 c:字符設備 s:套接字文件 p:命名管道 -size [+|-]#UNIT:根據文件大小查找 常用單位:k,M,G #UNIT:#-1<x<=# -#UNIT:x<=#-1 +#UNIT:x># (x為匹配到的文件大小)
時間戳查找
以“天”為單位 -atime(訪問時間) [+|-]# +#:x>=#+1 -#:x<# #:#<=x<#+1 (x為匹配到的文件時間) -mtime(修改時間) -ctime(改變時間) 以“分鐘”為單位 -atime -mtime -ctime (用法同上)
權限查找
-perm [+|-]MODE MODE:與MODE精確匹配 +MODE: 任何一類用戶的權限只要能包含對其指定的任何一位權限即可 -MODE:每類用戶指定的檢查權限都匹配
處理動作
-print: 默認處理動作,顯示 -ls:類似于ls -l -exec COMMAND {} \; -ok COMMAND {} \; find一次性查找符合條件的所有文件,并一同傳遞給給-exec或-ok后面指定的命令,但有些命令不能接受過長的參數,此時使用另一種方式: find | xargs COMMAND
find實戰
#查找/scripts/目錄中包含s以.sh結尾的文件并復制到/tmp目錄
#查找/var/目錄屬主為root且屬組為mail的所有文件
#查找/usr目錄下不屬于root、bin或scholar的所用文件
#查找/tmp/目錄下最近一周內其內容修改過的,且不屬于root且不屬于scholar的文件
#查找當前系統上沒有屬主或屬組,且最近1個月內曾被訪問過的文件
#查找/etc/目錄下大于1M且類型為普通文件的所有文件
#查找/etc/目錄所有用戶都沒有寫權限的文件
#查找/etc/目錄下至少有一類用戶沒有寫權限 #由于文件過多,已重定向
#查找/etc/rc.d/目錄下,所有用戶都有執行權限且其它用戶有寫權限的文件 #由于文件過多,已重定向
The end
對于權限查找+222和-222的取反匹配,學習時錯誤的只對+222和-222取反,可懵了好一會才想明白。最后在啰嗦一句,切記:權限查找取反是對全局匹配取反,而不是只對權限取反?。?!
以上只是學習總結,如有錯漏,大神勿噴~~~
本文出自 “北城書生” 博客,請務必保留此出處http://scholar.blog.51cto.com/9985645/1623450
原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/1368
幫你重新格式化了代碼段,進行了部分字體格式和大小調整,整體縮進段距,看起來要稍好些,加沒
@stanley:3Q :mrgreen: :mrgreen: :mrgreen:
mark