Linux下有多種查找文件指令:find、whereis、which和locate。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬主機(jī)、營(yíng)銷軟件、網(wǎng)站建設(shè)、夏津網(wǎng)站維護(hù)、網(wǎng)站推廣。
● which:查看可執(zhí)行文件的位置
●whereis:查看文件的位置
●locate:配合數(shù)據(jù)庫(kù)查看文件
●find:實(shí)際搜尋硬盤查詢
其中find是最常用和最強(qiáng)大的查找命令。它能做到實(shí)時(shí)查找,精確查找,但速度慢。下面主要對(duì)find指令相關(guān)用法進(jìn)行詳細(xì)介紹。
●●●find指令:
【格式】find [指定查找目錄](méi) [查找規(guī)則] [查找完后執(zhí)行的action]
默認(rèn)路徑為當(dāng)前目錄;默認(rèn)查找完后執(zhí)行的action為 -print。
-print //默認(rèn)情況下的動(dòng)作
-ls //查找到后用ls 顯示出來(lái)
-ok [commend] //查找后執(zhí)行命令的時(shí)候詢問(wèn)用戶是否要執(zhí)行
-exec [commend] //查找后執(zhí)行命令的時(shí)候不詢問(wèn)用戶,直接執(zhí)行
這里要注意{}的使用:替代查找到的文件
1、指定查找目錄
2、根據(jù)文件名查找
-name:根據(jù)文件名查找(精確查找)
-iname:根據(jù)文件名查找,但不區(qū)分大小寫
另外介紹下文件名通配的知識(shí)。
1)*表示 通配任意的字符
2)?表示通配任意的單個(gè)字符
3)[]表示通配括號(hào)里面的任意字符
3、正則表達(dá)式查找
?。悍菞l件;
-a :與條件(-and);
-o :或條件(-or),連接兩個(gè)不同的條件(兩個(gè)條件滿足其一即可)
-not 非條件(與“!”相同,對(duì)條件取反)
4、根據(jù)文件類型來(lái)查找文件
【-type】
f :普通文件;d :目錄文件;l :鏈接文件;b :塊設(shè)備文件;c:字符設(shè)備文件;p:管道文件;s :socket文件
5、根據(jù)文件大小查找文件
【-size】
-size n: 查找文件長(zhǎng)度等于n的文件;-size -n:查找文件長(zhǎng)度小于n的文件;-size +n:查找文件長(zhǎng)度大于n的文件
6、根據(jù)文件時(shí)間查找文件
-atime:訪問(wèn)時(shí)間,用戶最近一次訪問(wèn)文件的時(shí)間;
-mtime:修改時(shí)間,文件內(nèi)容最后一次被修改的時(shí)間。
-ctime:變化時(shí)間,文件元數(shù)據(jù)(metadata,例如權(quán)限或所有權(quán))最后一次改變的時(shí)間。
7、根據(jù)文件權(quán)限查找文件
【-prem】
權(quán)限符號(hào):rex分別表示可讀、可寫和可執(zhí)行,。當(dāng)權(quán)限符號(hào)為-e-:表示只可以寫,八進(jìn)制表示為2,依次進(jìn)行表示。
8、根據(jù)文件所屬用戶和組來(lái)查找文件
-user :根據(jù)屬主來(lái)查找文件
-group:根據(jù)屬組來(lái)查找文件
-nouser and -nogroup:在整個(gè)系統(tǒng)中查找既沒(méi)有屬主又沒(méi)有屬組的文件(這樣的文件通常是很危險(xiǎn)的,作為系統(tǒng)工程師的我們應(yīng)該及時(shí)清除掉)
9、根據(jù)uid和 gid來(lái)查找用戶
gid為GroupId,即組ID,用來(lái)標(biāo)識(shí)用戶組的唯一標(biāo)識(shí)符
uid為UserId,即用戶ID,用來(lái)標(biāo)識(shí)每個(gè)用戶的唯一標(biāo)示符
用戶組:將同一類用戶設(shè)置為同一個(gè)組,如可將所有的系統(tǒng)管理員設(shè)置為admin組,便于分配權(quán)限,將某些重要的文件設(shè)置為所有admin組用戶可以讀寫,這樣可以進(jìn)行權(quán)限分配。
每個(gè)用戶都有一個(gè)唯一的用戶id,每個(gè)用戶組都有一個(gè)唯一的組id
●● which指令:
which命令的作用是:在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果。也就是說(shuō),使用which命令,就可以看到某個(gè)系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個(gè)位置的命令。
【格式】which 可執(zhí)行文件名稱
-n :指定文件名長(zhǎng)度,指定的長(zhǎng)度必須大于或等于所有文件中最長(zhǎng)的文件名。
-p :與-n參數(shù)相同,但此處的包括了文件的路徑。
-w :指定輸出時(shí)欄位的寬度。
-V :顯示版本信息
which 是根據(jù)使用者所配置的 PATH 變量?jī)?nèi)的目錄去搜尋可運(yùn)行檔的,所以不同的 PATH 配置內(nèi)容所找到的命令是不一樣的。 cd 是bash 內(nèi)建的命令,但是 which 默認(rèn)是找 PATH 內(nèi)所規(guī)范的目錄,所以找不到的。查找which時(shí)會(huì)有兩個(gè) which ,其中一個(gè)是 alias 這就是所謂的【命令別名】,意思是輸入 which 會(huì)等同后面接的那串命令。
● whereis指令:
whereis命令只能用于程序名的搜索。而且只搜索二進(jìn)制文件(參數(shù)-b)、man說(shuō)明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù),則返回所有信息。
whereis命令是定位可執(zhí)行文件、源代碼文件、幫助文件在文件系統(tǒng)中的位置。這些文件的屬性應(yīng)屬于原始代碼,二進(jìn)制文件,或是幫助文件。whereis 程序還具有搜索源代碼、指定備用搜索路徑和搜索不尋常項(xiàng)的能力。
【格式】whereis 文件名
-b :定位可執(zhí)行文件。
-m :定位幫助文件。
-s :定位源代碼文件。
-u :搜索默認(rèn)路徑下除可執(zhí)行文件、源代碼文件、幫助文件以外的其它文件。
和find相比,whereis查找的速度非???,這是因?yàn)閘inux系統(tǒng)會(huì)將系統(tǒng)內(nèi)的所有文件都記錄在一個(gè)數(shù)據(jù)庫(kù)文件中,當(dāng)使用whereis和locate時(shí),會(huì)從數(shù)據(jù)庫(kù)中查找數(shù)據(jù),而不是像find命令那樣,通過(guò)遍歷硬盤來(lái)查找,效率高。
但是該數(shù)據(jù)庫(kù)文件并不是實(shí)時(shí)更新,默認(rèn)情況下時(shí)一星期更新一次,因此在用whereis和locate 查找文件時(shí),有時(shí)會(huì)找到已經(jīng)被刪除的數(shù)據(jù),或者剛剛建立文件卻無(wú)法查找到,原因就是因?yàn)閿?shù)據(jù)庫(kù)文件沒(méi)有被更新。
● locate指令:
locate作用:使用者可以很快速的搜尋檔案系統(tǒng)內(nèi)是否有指定的檔案。其方法是先建立一個(gè)包括系統(tǒng)內(nèi)所有檔案名稱及路徑的索引數(shù)據(jù)庫(kù)之后當(dāng)尋找時(shí)就只需查詢這個(gè)索引數(shù)據(jù)庫(kù)而不必實(shí)際深入檔案系統(tǒng)之中了
【格式】locate 文件名
eg:locate passwd (只要包含了passwd的都會(huì)被顯示出來(lái))
locate可進(jìn)行篩選
-i :查找文件的時(shí)候不區(qū)分大小寫
-n :只顯示查找結(jié)果的前N行