您好,登錄后才能下訂單哦!
Linux下有多種查找文件指令:find、whereis、which和locate。
● which:查看可執行文件的位置
● whereis:查看文件的位置
● locate:配合數據庫查看文件
● find:實際搜尋硬盤查詢
其中find是最常用和最強大的查找命令。它能做到實時查找,精確查找,但速度慢。下面主要對find指令相關用法進行詳細介紹。
●●●find指令:
【格式】find [指定查找目錄] [查找規則] [查找完后執行的action]
默認路徑為當前目錄;默認查找完后執行的action為 -print。
-print //默認情況下的動作
-ls //查找到后用ls 顯示出來
-ok [commend] //查找后執行命令的時候詢問用戶是否要執行
-exec [commend] //查找后執行命令的時候不詢問用戶,直接執行
這里要注意{}的使用:替代查找到的文件
1、指定查找目錄
2、根據文件名查找
-name:根據文件名查找(精確查找)
-iname:根據文件名查找,但不區分大小寫
另外介紹下文件名通配的知識。
1)*表示 通配任意的字符
2)?表示通配任意的單個字符
3)[]表示通配括號里面的任意字符
3、正則表達式查找
!:非條件;
-a :與條件(-and);
-o :或條件(-or),連接兩個不同的條件(兩個條件滿足其一即可)
-not 非條件(與“!”相同,對條件取反)
4、根據文件類型來查找文件
【-type】
f :普通文件;d :目錄文件;l :鏈接文件;b :塊設備文件;c:字符設備文件;p:管道文件;s :socket文件
5、根據文件大小查找文件
【-size】
-size n: 查找文件長度等于n的文件;-size -n:查找文件長度小于n的文件;-size +n:查找文件長度大于n的文件
6、根據文件時間查找文件
-atime:訪問時間,用戶最近一次訪問文件的時間;
-mtime:修改時間,文件內容最后一次被修改的時間。
-ctime:變化時間,文件元數據(metadata,例如權限或所有權)最后一次改變的時間。
7、根據文件權限查找文件
【-prem】
權限符號:rex分別表示可讀、可寫和可執行,。當權限符號為-e-:表示只可以寫,八進制表示為2,依次進行表示。
8、根據文件所屬用戶和組來查找文件
-user :根據屬主來查找文件
-group:根據屬組來查找文件
-nouser and -nogroup:在整個系統中查找既沒有屬主又沒有屬組的文件(這樣的文件通常是很危險的,作為系統工程師的我們應該及時清除掉)
9、根據uid 和 gid來查找用戶
gid為GroupId,即組ID,用來標識用戶組的唯一標識符
uid為UserId,即用戶ID,用來標識每個用戶的唯一標示符
用戶組:將同一類用戶設置為同一個組,如可將所有的系統管理員設置為admin組,便于分配權限,將某些重要的文件設置為所有admin組用戶可以讀寫,這樣可以進行權限分配。
每個用戶都有一個唯一的用戶id,每個用戶組都有一個唯一的組id
●● which指令:
which命令的作用是:在PATH變量指定的路徑中,搜索某個系統命令的位置,并且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
【格式】which 可執行文件名稱
-n :指定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名。
-p :與-n參數相同,但此處的包括了文件的路徑。
-w :指定輸出時欄位的寬度。
-V :顯示版本信息
which 是根據使用者所配置的 PATH 變量內的目錄去搜尋可運行檔的,所以不同的 PATH 配置內容所找到的命令是不一樣的。 cd 是bash 內建的命令,但是 which 默認是找 PATH 內所規范的目錄,所以找不到的。查找which時會有兩個 which ,其中一個是 alias 這就是所謂的【命令別名】,意思是輸入 which 會等同后面接的那串命令。
● whereis指令:
whereis命令只能用于程序名的搜索。而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。
whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬于原始代碼,二進制文件,或是幫助文件。whereis 程序還具有搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。
【格式】whereis 文件名
-b :定位可執行文件。
-m :定位幫助文件。
-s :定位源代碼文件。
-u :搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。
和find相比,whereis查找的速度非常快,這是因為linux系統會將系統內的所有文件都記錄在一個數據庫文件中,當使用whereis和locate時,會從數據庫中查找數據,而不是像find命令那樣,通過遍歷硬盤來查找,效率高。
但是該數據庫文件并不是實時更新,默認情況下時一星期更新一次,因此在用whereis和locate 查找文件時,有時會找到已經被刪除的數據,或者剛剛建立文件卻無法查找到,原因就是因為數據庫文件沒有被更新。
● locate指令:
locate作用:使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的索引數據庫之后當尋找時就只需查詢這個索引數據庫而不必實際深入檔案系統之中了
【格式】locate 文件名
eg:locate passwd (只要包含了passwd的都會被顯示出來)
locate可進行篩選
-i :查找文件的時候不區分大小寫
-n :只顯示查找結果的前N行
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。