文件查找

前言:我們爲什麼要學習文件查找?

每一種操作系統都有成千上萬的文件組成,對於linux這樣“一切皆文件”的操作系統來說更不例外,大家應該都能很輕鬆使用windows下的文件查找功能,但是對linux這一功能可能並不是很熟悉,其實想玩linux的你更要牢牢掌握這個命令,因爲linux不像windows那樣有固定的文件名後綴,並且因爲linux陣營下百家爭鳴的特性,一個相同的文件在不同的發行版,可能會有不同,所以如果你能牢牢掌握find命令的使用,你在摸索linux的道路上將會順利很多,同時你會發現linux下文件查找功能其實很簡單,而且要比windows下查找功能強大很多很多!好,下面進入正題
————————————————————————————————————————————————————————————
Linux下文件查找有兩類:find 和 locate

兩者的工作特點有如下區別:

locate find
模糊查找 精確查找
非實時查找 實時查找
查找速度快 查找速度略慢
可能只搜索用戶具備讀和寫權限的文件和目錄 可能只搜索用戶具備讀和寫權限的文件和目錄
查詢系統上預建文件索引數據庫 通過遍歷指定路徑完成搜索

————————————————————————————————————————————————————————————
一、locate 查找

查詢系統上預建的文件索引數據庫
/var/lib/mlocate/mlocate.db
locate查找依賴於事先構建的索引,索引的構建是在系統較爲空閒時自動進行(週期性任務),管理員手動更新數據庫(updatedb),索引構建過程需要遍歷整個根文件系統,極消耗資源,所以我們建議在非必要的情況下,一般不要手動更新數據。
locate 的基本用法:
locate keyword
有用的選項
-i 不區分大小寫的搜索
-n N只列舉前N個匹配項目
locate conf
搜索名稱或路徑中帶有“conf”的文件
locate -r ‘.conf$’<——使用Regex來搜索以“.conf”結尾的文件
二、find 查找

語法:

find [OPTION]… [查找路徑] [查找條件] [處理動作]
|查找路徑:|指定具體目標路徑;默認爲當前目錄|
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認爲找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕

1.根據層級搜索

-maxdepth level 最大搜索目錄深度,指定目錄爲第1級
-mindepth level 最小搜索目錄深度
例子

find / -mindepth 2 -maxdepth 2 -name "*.conf"

這裏寫圖片描述

說明:我們指定的最大搜索目錄深度爲2層,查找最小的也爲2層,所以搜索出來的結果都是兩層目錄。

2. 根據文件名和inode查找

-name “文件名稱”:支持使用glob *,?,[],[^]
-iname n 按inode號查找
-samefile name 相同inode號的文件
-links n 鏈接數爲n的文件
-regex “PATTERN”:以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

find / -inum 2

這裏寫圖片描述

說明:搜索根目錄下的inode號爲2的文件,同時我們知道每個分區的根目錄的節點編號爲2
,其他的自己多練習吧,這裏我不再每個舉例說明了。

3. 根據屬主、屬組查找:

-user USERNAME:查找屬主爲指定用戶(UID)的文件
-group GRPNAME: 查找屬組爲指定組(GID)的文件
-uidUserID:查找屬主爲指定的UID號的文件
-gidGroupID:查找屬組爲指定的GID號的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件

find /home -user zhang

這裏寫圖片描述

說明:查找home目錄下的所屬主爲用戶zhang的文件或者目錄

ll -d /home/zhang

這裏寫圖片描述

說明:可以看到文件所屬主爲zhang。

4. 根據文件類型查找:

-type TYPE:
•f: 普通文件
•d: 目錄文件
•l: 符號鏈接文件
•s:套接字文件
•b: 塊設備文件
•c: 字符設備文件
•p: 管道文件

find /etc/ -type d 

這裏寫圖片描述

說明:查找/etc/目錄下所有目錄文件

5. 根據時間戳查找:

以“天”爲單位;
 -atime[+|-] #————–> 如果#爲10天
  #: [#,#+1)————– ->訪問時間爲大於等於10天,小於11天的文件
  +#: [#+1,∞]————- ->訪問時間爲大於等於11天的文件
  -#: [0,#)—————— ->訪問時間爲小於等於10天的文件
 -mtime——————修改時間(天)
 -ctime——————-創建時間(天)
以“分鐘”爲單位:
 -amin
 -mmin
 -cmin

find /root/ -cmin -1   #在家目錄下創建一個文件1.txt

這裏寫圖片描述

說明:在家目錄下搜索,在一分鐘內創建的文件,如圖所示,搜索出剛剛創建的1.txt文件。

6. 根據權限查找:

-perm [/|-]MODE
MODE: 精確權限匹配
/MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關係,+ 從centos7開始淘汰
-MODE:每一類對象都必須同時擁有指定權限,與關係
0 表示不關注
•find-perm755會匹配權限模式恰好是755的文件
•只要當任意人有讀權限時,find-perm+222就會匹配
•只有當每個人都有寫權限時,find-perm-222纔會匹配
•只有當其它人(other)有寫權限時,find-perm-002纔會匹配

find / -perm -222

這裏寫圖片描述

說明:從根目錄下取出user,group,other 都有寫權限的文件,爲了方便查看,取出顯示結果的前10行,結果如圖所示。我們可以查看/selinux/目錄下的null文件的屬性驗證一下

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章