溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux中常用的查詢指令(which、whereis、find、locatae)

發(fā)布時(shí)間:2020-07-18 11:21:21 來源:網(wǎng)絡(luò) 閱讀:2692 作者:羌笛夜 欄目:數(shù)據(jù)庫

我們經(jīng)常在linux要查找某個(gè)文件,但不知道放在哪里了,可以使用下面的一些命令來搜索:

Which   查看可執(zhí)行文件的位置。

whereis 查看文件的位置。

locate  配合數(shù)據(jù)庫查看文件位置。

Find    實(shí)際搜尋硬盤查詢文件名稱

which

which命令的作用是,在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果。也就是說,使用which 命令,就可以看到某個(gè)系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪個(gè)位置的命令。 

1.命令格式: which 可執(zhí)行文件名稱 

2.命令功能: which指令會(huì)在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果。

例1:

查找有別名的命令時(shí),顯示別名的信息

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)

例如:在環(huán)境變量指定的路徑中,搜索ls命令的位置

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)

3.命令參數(shù):

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

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

-w  指定輸出時(shí)欄位的寬度。

-V  顯示版本信息

which -v

Linux中常用的查詢指令(which、whereis、find、locatae) Linux中常用的查詢指令(which、whereis、find、locatae)


whereis指令:

whereis命令只能用于程序名的搜索,并且只搜索二進(jìn)制文件 (參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。

如果省略參數(shù),則返回所有信息。

    和find相比,whereis查找的速度非??欤@是因?yàn)閘inux系統(tǒng)會(huì)將系統(tǒng)內(nèi)的所有文件都記錄在一個(gè)數(shù)據(jù)庫文件中,當(dāng)使用 whereis和下面即將介紹的locate時(shí),會(huì)從數(shù)據(jù)庫中查找數(shù)據(jù), 而不是像find命令那樣,通過遍歷硬盤來查找,效率自然會(huì)很高。 

     但是該數(shù)據(jù)庫文件并不是實(shí)時(shí)更新,默認(rèn)情況下時(shí)每星期更新一次,因此,我們?cè)谟脀hereis和locate 查找文件時(shí),有時(shí)會(huì)找到已經(jīng)被刪除的數(shù)據(jù),或者剛建立文件,卻無法查找到,原因就是因?yàn)閿?shù)據(jù)庫文件沒有被更新。

 

1.命令格式:

          whereis [-bmsu] [BMS 目錄名 -f ] 文件名

 

2.命令功能:

whereis命令是定位可執(zhí)行文件、源代碼文件、幫助文件在文件系統(tǒng)中的位置。這些文件的屬性應(yīng)屬于原始代碼,二進(jìn)制文 件,或是幫助文件。whereis 程序還具有搜索源代碼、指定備用搜索路徑和搜索不尋常項(xiàng)的能力。

 

3.命令參數(shù):

-b   定位可執(zhí)行文件。

-m   定位幫助文件。

-s   定位源代碼文件。

-u   搜索默認(rèn)路徑下除可執(zhí)行文件、源代碼文件、幫助文件以外的其它文件。

-B   指定搜索可執(zhí)行文件的路徑。

-M   指定搜索幫助文件的路徑。

-S   指定搜索源代碼文件的路徑。

4.使用實(shí)例:

whereis –b grep      定位可執(zhí)行文件。

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)

whereis -m grep   定位幫助文件。

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)

whereis -s grep      定位源代碼文件。

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)

whereis -u grep       搜索默認(rèn)路徑下除可執(zhí)行文件、源代碼文件、幫助文件以外的其它文件

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)


-B   指定搜索可執(zhí)行文件的路徑。

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)

-M   指定搜索幫助文件的路徑。

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)

-S   指定搜索源代碼文件的路徑。

Linux中常用的查詢指令(which、whereis、find、locatae)Linux中常用的查詢指令(which、whereis、find、locatae)


find指令:

    Linux下find命令在目錄結(jié)構(gòu)中搜索文件,并執(zhí)行指定的操作。 Linux下find命令提供了相當(dāng)多的查找條件,功能很強(qiáng)大。由于 find具有強(qiáng)大的功能,所以它的選項(xiàng)也很多,其中大部分選項(xiàng)都值得我們花時(shí)間來了解一下。即使系統(tǒng)中含有網(wǎng)絡(luò)文件系統(tǒng)( NFS), find命令在該文件系統(tǒng)中同樣有效,只你具有相應(yīng)的權(quán)限。 在運(yùn)行一個(gè)非常消耗資源的find命令時(shí),很多人都傾向于把它放在后臺(tái)執(zhí)行,因?yàn)楸闅v一個(gè)大的文件系統(tǒng)可能會(huì)花費(fèi)很長的時(shí)間(這里是指30G字節(jié)以上的文件系統(tǒng))。

1.命令格式:

find pathname -options [-print -exec -ok ...]

 2.命令功能:

 用于在文件樹種查找文件,并作出相應(yīng)的處理(可能訪問磁盤)

3.命令參數(shù):

pathname: find命令所查找的目錄路徑。例如用.來表示當(dāng)前目錄,用/來表示系統(tǒng)根目錄

-print: find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。 

-exec: find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' {} \;,注意{}和\; 之間的空格。

-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示,讓用戶來確定是否執(zhí)行

使用用例:

查找當(dāng)前目錄下的test.cpp 并輸出

Linux中常用的查詢指令(which、whereis、find、locatae)

查找當(dāng)前目錄下的test.c并且顯示權(quán)限

Linux中常用的查詢指令(which、whereis、find、locatae)

查找當(dāng)前目錄下的test.c并且顯示權(quán)限

Linux中常用的查詢指令(which、whereis、find、locatae)

4.命令選項(xiàng):

-name   按照文件名查找文件(精確查找區(qū)分大小寫)

Linux中常用的查詢指令(which、whereis、find、locatae)

-iname   按照文件名查找文件(不區(qū)分大小寫)

Linux中常用的查詢指令(which、whereis、find、locatae)

-perm   按照文件權(quán)限來查找文件

Linux中常用的查詢指令(which、whereis、find、locatae)

-user   按照文件屬來查找文件。

Linux中常用的查詢指令(which、whereis、find、locatae)

-group  按照文件所屬的組來查找文件

Linux中常用的查詢指令(which、whereis、find、locatae)

-mtime -n +n  按照文件的更改時(shí)間來查找文件

- n表示文件更改時(shí)間距現(xiàn)在n天以內(nèi)

Linux中常用的查詢指令(which、whereis、find、locatae)

+ n表示文件更改時(shí)間距現(xiàn)在n天以前

Linux中常用的查詢指令(which、whereis、find、locatae)

find命令還有-atime和-ctime 選項(xiàng),但它們都和-m time 選項(xiàng)相同

-nogroup  查找無有效所屬組的文件,即該文件所屬的組在/ etc/groups中不存在

Linux中常用的查詢指令(which、whereis、find、locatae)

-nouser   查找無有效屬主的文件,即該文件的屬主在/etc/ passwd中不存在。

Linux中常用的查詢指令(which、whereis、find、locatae)

-newer file1 ! file2  查找更改時(shí)間比文件file1新但比文件file2舊的文件

Linux中常用的查詢指令(which、whereis、find、locatae)

-type  查找某一類型的文件,諸如

b - 塊設(shè)備文件

Linux中常用的查詢指令(which、whereis、find、locatae)

d - 目錄

Linux中常用的查詢指令(which、whereis、find、locatae)

c - 字符設(shè)備文件

Linux中常用的查詢指令(which、whereis、find、locatae)

p - 管道文件

Linux中常用的查詢指令(which、whereis、find、locatae)

l - 符號(hào)鏈接文件

Linux中常用的查詢指令(which、whereis、find、locatae)

f - 普通文件

Linux中常用的查詢指令(which、whereis、find、locatae)

-size n:[c] 查找文件長度為n塊的文件,帶有c時(shí)表示文件長度以字節(jié)計(jì)。

Linux中常用的查詢指令(which、whereis、find、locatae)


Linux中常用的查詢指令(which、whereis、find、locatae)

-depth:在查找文件時(shí),首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找

Linux中常用的查詢指令(which、whereis、find、locatae)

-fstype:查找位于某一類型文件系統(tǒng)中的文件,這些文件系統(tǒng)類型通??梢栽谂渲梦募?etc/fstab中找到,該配置文件中包含了本系統(tǒng)中有關(guān)文件系統(tǒng)的信息

-mount:在查找文件時(shí)不跨越文件系統(tǒng)mount點(diǎn)。

-follow:如果find命令遇到符號(hào)鏈接文件,就跟蹤至鏈接所指向的文件

-cpio:對(duì)匹配的文件使用cpio命令,將這些文件備份到磁帶設(shè)備中。

 另外,下面三個(gè)的區(qū)別:

- 建時(shí)間來查找文件,-n指n天以內(nèi),+n指n天以前 

例子:

1. 在當(dāng)前目錄中查找更改時(shí)間在5日以前的文件并刪除它們:   

 find . -type f -mtime +5 -ok rm {} \;

Linux中常用的查詢指令(which、whereis、find、locatae)

2. Linux 用find命令查找文件大小為XX的文件的辦法    

例如:一個(gè)文件5556字節(jié),可以這樣寫   

即查找大于5555字節(jié)小于5557字節(jié)的文件,以上查找的是/root 目錄

find /root -size -5557c -size +5555c -exec ls -ld {} \; 

查找小于500K,大于50K的文件

find /root -size -500K -size +50K -exec ls -ld {} \;  

 

練習(xí):  

查找/目錄下文件名為test的目錄

$ find / -name test -print

查找當(dāng)前所有目錄并排序

 

升序

Linux中常用的查詢指令(which、whereis、find、locatae)

降序

Linux中常用的查詢指令(which、whereis、find、locatae)

查找所有目錄名稱中按照”.log”結(jié)尾的目錄

]$ find / -name '*.log' -print


查找系統(tǒng)中最近5分鐘訪問的目錄 

查找系統(tǒng)中最近5天訪問的文件 

find / -mtime -5

查找當(dāng)前目錄下所有權(quán)限為775的文件,并設(shè)置成777

 find . -perm 775 -ok chmod 777 {} \;

Linux中常用的查詢指令(which、whereis、find、locatae)

查找文件大小為10k的文件,并刪除

Linux中常用的查詢指令(which、whereis、find、locatae)


locate指令:

使用權(quán)限:所有使用者

使用方式: locate [-q] [-d ] [--database=]

locate [-r ] [--regexp=]

locate [-qv] [-o ] [--output=]

locate [-e ] [-f ] <[-l ] [-c]

locate [-Vh] [--version] [--help] 

說明:

locate 讓使用者可以很快速的搜尋檔案系統(tǒng)內(nèi)是否有指定的檔案。其方法是先建立一個(gè)包括系統(tǒng)內(nèi)所有檔案名稱及路徑的資料庫,之后當(dāng)尋找時(shí)就只需查詢這個(gè)資料庫,而不必實(shí)際深入檔案系統(tǒng)之中了。

 在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動(dòng)執(zhí)行。一般使用者在使用時(shí)只要用 # locate your_file_name 的型式就可以了。

參數(shù):

-u 

-U

建立資料庫,-u 會(huì)由根目錄開始,-U 則可以指定開始的位置。

 

-l

 如果 是 1.則啟動(dòng)安全模式。在安全模式下,使用者不會(huì)看到權(quán)限無法看到的檔案。這會(huì)使速度減慢,因?yàn)?locate 必須至實(shí)際的檔案系統(tǒng)中取得檔案的權(quán)限資料

-f 

將特定的檔案系統(tǒng)排除在外,例如我們沒有到理要把 proc 檔案系統(tǒng)中的檔案放在資料庫中

-q 

安靜模式,不會(huì)顯示任何錯(cuò)誤訊息

-n 

至多顯示 n個(gè)輸出

-r 

使用正規(guī)運(yùn)算式做尋找的條件

-o 

指定資料庫存的名稱

-d

 指定資料庫的路徑

 -h 

顯示輔助訊息

 -v 

顯示更多的訊息

 -V

顯示程式的版本訊息

范例:

locate chdrv : 尋找所有叫chdrv 的檔案 

locate -n 100 a.out :尋找所有叫 a.out 的檔案,但最多只顯示100個(gè)

locate -u : 建立資料庫


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI