【Linux】文件查找:find

Linux下有多種查找文件指令:find、whereis、which和locate。

● which:查看可執行文件的位置

whereis:查看文件的位置

locate:配合數據庫查看文件

find:實際搜尋硬盤查詢

       其中find是最常用和最強大的查找命令。它能做到實時查找,精確查找,但速度慢。下面主要對find指令相關用法進行詳細介紹。

●●●find指令:

【格式】find  [指定查找目錄]  [查找規則]  [查找完後執行的action]

默認路徑爲當前目錄;默認查找完後執行的action爲 -print。

-print                         //默認情況下的動作

-ls                              //查找到後用ls 顯示出來

-ok  [commend]        //查找後執行命令的時候詢問用戶是否要執行

-exec [commend]      //查找後執行命令的時候不詢問用戶,直接執行

wKiom1dEa4fw2D4JAABLhCRyxzM116.png

這裏要注意{}的使用:替代查找到的文件

1、指定查找目錄

wKioL1dER0fAq7CsAAAhMWDQSSM474.png

2、根據文件名查找

-name:根據文件名查找(精確查找)

-iname:根據文件名查找,但不區分大小寫

wKiom1dEQluQSTyUAAAemgg9DPg693.png

另外介紹下文件名通配的知識。

1)*表示 通配任意的字符

wKiom1dEPiPQ6_bLAAAfJbRo60s324.png

2)?表示通配任意的單個字符

wKioL1dEP2CyYrTEAAAafgld57I385.png

3)[]表示通配括號裏面的任意字符

wKiom1dEPzqA4is-AAAWBDwm_2Y048.png

3、正則表達式查找

!:非條件;

-a :與條件(-and);

-o :或條件(-or),連接兩個不同的條件(兩個條件滿足其一即可)

-not 非條件(與“!”相同,對條件取反)

wKioL1dETgyBwXYgAAA-YbZgVHU458.png

4、根據文件類型來查找文件

 【-type】

f :普通文件;d :目錄文件;l :鏈接文件;b :塊設備文件;c:字符設備文件;p:管道文件;s :socket文件

wKioL1dERcaS6sT6AABWLDNzzGw652.png

5、根據文件大小查找文件

【-size】

-size n: 查找文件長度等於n的文件;-size -n:查找文件長度小於n的文件-size +n:查找文件長度大於n的文件

wKioL1dEUZrhIAQHAAA4_M6IpGw476.png

6、根據文件時間查找文件

-atime:訪問時間,用戶最近一次訪問文件的時間;

-mtime:修改時間,文件內容最後一次被修改的時間。
-ctime:變化時間,文件元數據(metadata,例如權限或所有權)最後一次改變的時間。

wKioL1dEWGXDhvG6AABbK0zljxI837.png

7、根據文件權限查找文件

【-prem】

權限符號:rex分別表示可讀、可寫和可執行,。當權限符號爲-e-:表示只可以寫,八進制表示爲2,依次進行表示。

wKiom1dEXauiSjtuAABJwkV25IU722.png

8、根據文件所屬用戶和組來查找文件

 -user :根據屬主來查找文件

 -group:根據屬組來查找文件

-nouser  and  -nogroup:在整個系統中查找既沒有屬主又沒有屬組的文件(這樣的文件通常是很危險的,作爲系統工程師的我們應該及時清除掉)

wKioL1dEZM-TjGhkAAA0yU7N5tU225.png

9、根據uid gid來查找用戶

gid爲GroupId,即組ID,用來標識用戶組的唯一標識符
uid爲UserId,即用戶ID,用來標識每個用戶的唯一標示符

wKiom1dEbIzRFSxCAAA9Nzw1Jyw048.png
用戶組:將同一類用戶設置爲同一個組,如可將所有的系統管理員設置爲admin組,便於分配權限,將某些重要的文件設置爲所有admin組用戶可以讀寫,這樣可以進行權限分配。
每個用戶都有一個唯一的用戶id,每個用戶組都有一個唯一的組id

●● which指令:

       which命令的作用是:在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。 

【格式】which 可執行文件名稱 

-n :指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名。

-p :與-n參數相同,但此處的包括了文件的路徑。

-w :指定輸出時欄位的寬度。

-V :顯示版本信息

wKioL1dEJj3TFhDZAAA4VWXHMPY803.png

      which 是根據使用者所配置的 PATH 變量內的目錄去搜尋可運行檔的,所以不同的 PATH 配置內容所找到的命令是不一樣的。 cd 是bash 內建的命令,但是 which 默認是找 PATH 內所規範的目錄,所以找不到的。查找which時會有兩個 which ,其中一個是 alias 這就是所謂的【命令別名】,意思是輸入 which 會等同後面接的那串命令。

● whereis指令:

       whereis命令只能用於程序名的搜索。而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。

        whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬於原始代碼,二進制文件,或是幫助文件。whereis 程序還具有搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。

【格式】whereis  文件名

-b :定位可執行文件。

-m :定位幫助文件。

-s :定位源代碼文件。

-u :搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。

wKiom1dEKKaT_WV7AABNARs8mlA450.png

和find相比,whereis查找的速度非常快,這是因爲linux系統會將系統內的所有文件都記錄在一個數據庫文件中,當使用whereis和locate時,會從數據庫中查找數據,而不是像find命令那樣,通過遍歷硬盤來查找,效率高。 

但是該數據庫文件並不是實時更新,默認情況下時一星期更新一次,因此在用whereis和locate 查找文件時,有時會找到已經被刪除的數據,或者剛剛建立文件卻無法查找到,原因就是因爲數據庫文件沒有被更新。

● locate指令:

      locate作用:使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的索引數據庫之後當尋找時就只需查詢這個索引數據庫而不必實際深入檔案系統之中了

【格式】locate  文件名

eg:locate passwd (只要包含了passwd的都會被顯示出來)

wKiom1dEM8OAoHCxAABAdGz8ZRg439.png

locate可進行篩選

 -i  :查找文件的時候不區分大小寫

 -n :只顯示查找結果的前N行 

wKioL1dENbPCsa8yAABUYick-bQ334.png

wKioL1dEN8XxHOY_AABAUHwUoAs113.png

wKiom1dEN0Xy_Kq8AAAos8F8OgE542.png

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