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

咱們常常在linux要查找某個文件,但不知道放在哪裏了,可使用下面的一些命令來搜索:linux

Which   查看可執行文件的位置。shell

whereis 查看文件的位置。數據庫

locate  配合數據庫查看文件位置。安全

Find    實際搜尋硬盤查詢文件名稱網絡

whichide

which命令的做用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,而且返回第一個搜索結果。也就是說,使用which 命令,就能夠看到某個系統命令是否存在,以及執行的究竟是哪一個位置的命令。 url

1.命令格式: which 可執行文件名稱 spa

2.命令功能: which指令會在PATH變量指定的路徑中,搜索某個系統命令的位置,而且返回第一個搜索結果。3d

例1:regexp

查找有別名的命令時,顯示別名的信息

spacer.gifwKiom1dJNciQCEidAAAMvSazs-E129.png

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

spacer.gifwKioL1dJNtHw809AAAAN8Zr-lkE127.png

3.命令參數:

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

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

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

-V  顯示版本信息

which -v

wKiom1dJNeuTEm9gAAAb1lFwGq4407.png spacer.gif


whereis指令:

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

若是省略參數,則返回全部信息。

    和find相比,whereis查找的速度很是快,這是由於linux系統會將系統內的全部文件都記錄在一個數據庫文件中,當使用 whereis和下面即將介紹的locate時,會從數據庫中查找數據, 而不是像find命令那樣,經過遍歷硬盤來查找,效率天然會很高。 

     可是該數據庫文件並非實時更新,默認狀況下時每星期更新一次,所以,咱們在用whereis和locate 查找文件時,有時會找到已經被刪除的數據,或者剛創建文件,卻沒法查找到,緣由就是由於數據庫文件沒有被更新。

 

1.命令格式:

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

 

2.命令功能:

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

 

3.命令參數:

-b   定位可執行文件。

-m   定位幫助文件。

-s   定位源代碼文件。

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

-B   指定搜索可執行文件的路徑。

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

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

4.使用實例:

whereis –b grep      定位可執行文件。

spacer.gifwKioL1dJNv2BliVcAAAKEA5PD5s493.png

whereis -m grep   定位幫助文件。

spacer.gifwKiom1dJNhTDlf8LAAANLoSlF78392.png

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

spacer.gifwKioL1dJNxvj_2YtAAANLoSlF78913.png

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

spacer.gifwKioL1dJNybzsoccAAAJSnSdCVM905.png


-B   指定搜索可執行文件的路徑。

spacer.gifwKiom1dJNjvzVP3EAAAWq5-6LUE135.png

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

spacer.gifwKiom1dJNkiCnBueAAALH0_wgzE472.png

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

spacer.gifwKioL1dJN0ujSIzeAAANr3D4pV0082.png


find指令:

    Linux下find命令在目錄結構中搜索文件,並執行指定的操做。 Linux下find命令提供了至關多的查找條件,功能很強大。因爲 find具備強大的功能,因此它的選項也不少,其中大部分選項都值得咱們花時間來了解一下。即便系統中含有網絡文件系統( NFS), find命令在該文件系統中一樣有效,只你具備相應的權限。 在運行一個很是消耗資源的find命令時,不少人都傾向於把它放在後臺執行,由於遍歷一個大的文件系統可能會花費很長的時間(這裏是指30G字節以上的文件系統)。

1.命令格式:

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

 2.命令功能:

 用於在文件樹種查找文件,並做出相應的處理(可能訪問磁盤)

3.命令參數:

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

-print: find命令將匹配的文件輸出到標準輸出。 

-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式爲'command' {} \;,注意{}和\; 之間的空格。

-ok: 和-exec的做用相同,只不過以一種更爲安全的模式來執行該參數所給出的shell命令,在執行每個命令以前,都會給出提示,讓用戶來肯定是否執行

使用用例:

查找當前目錄下的test.cpp 並輸出

wKioL1dJODSRJawlAAAM2K-DswA345.png

查找當前目錄下的test.c而且顯示權限

wKiom1dJN1LTU6u0AAATkUcp9fY642.png

查找當前目錄下的test.c而且顯示權限

wKioL1dJOFjAAl9rAAAawb_FAiA150.png

4.命令選項:

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

wKiom1dJN2-js-aUAAAN4oC8HzE516.png

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

wKioL1dJOHnBMER0AAATpM1YcBs476.png

-perm   按照文件權限來查找文件

wKiom1dJN43xh-gVAAAlHn-7iLk367.png

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

wKioL1dJOJOiF0lNAAAPEvsICb4656.png

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

wKiom1dJN6zQwnf7AAAM5hMvX3U877.png

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

- n表示文件更改時間距如今n天之內

wKioL1dJOLKxy6GBAAALOZHlrJA001.png

+ n表示文件更改時間距如今n天之前

wKioL1dJOMSDKCdZAAANuUBRjWU659.png

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

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

wKiom1dJN9jgAfzXAAAL_mvoCfo106.png

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

wKiom1dJN-OAhscGAAAI0NX3qHo612.png

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

wKioL1dJOOqjUtIdAAAWvGhGUKI275.png

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

b - 塊設備文件

wKiom1dJOAHS261IAAAGhHqrLbQ502.png

d - 目錄

wKioL1dJOQbAioB3AAAayuNaP_U870.png

c - 字符設備文件

wKiom1dJOBnCg89vAAAGpd-CTn8522.png

p - 管道文件

wKioL1dJOR2BAiAaAAAGrEBlqHE021.png

l - 符號連接文件

wKiom1dJODLiiTLtAAAe0vv-ZvY203.png

f - 普通文件

wKioL1dJOTaiDO7FAAAbxX14YK0051.png

-size n:[c] 查找文件長度爲n塊的文件,帶有c時表示文件長度以字節計。

wKiom1dJOFCwUjm1AAAM1KZ8z6w538.png


wKioL1dJOV3C-b21AAAHXNVfFFU658.png

-depth:在查找文件時,首先查找當前目錄中的文件,而後再在其子目錄中查找

wKioL1dJOWrD_JO8AAAMwdt6NjI693.png

-fstype:查找位於某一類型文件系統中的文件,這些文件系統類型一般能夠在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息

-mount:在查找文件時不跨越文件系統mount點。

-follow:若是find命令遇到符號連接文件,就跟蹤至連接所指向的文件

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

 另外,下面三個的區別:

- 建時間來查找文件,-n指n天之內,+n指n天之前 

例子:

1. 在當前目錄中查找更改時間在5日之前的文件並刪除它們:   

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

wKioL1dJOXnyc6otAAAjt5X8Kc4413.png

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

例如:一個文件5556字節,能夠這樣寫   

即查找大於5555字節小於5557字節的文件,以上查找的是/root 目錄

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

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

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

 

練習:  

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

$ find / -name test -print

查找當前全部目錄並排序

 

升序

wKiom1dJOJbSqyRoAAAeDo2gVks925.png

降序

wKiom1dJOKDzYntDAAAahsCWA3A180.png

查找全部目錄名稱中按照」.log」結尾的目錄

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


查找系統中最近5分鐘訪問的目錄 

查找系統中最近5天訪問的文件 

find / -mtime -5

查找當前目錄下全部權限爲775的文件,並設置成777

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

wKioL1dJOafR7XtjAABCxEaagyQ172.png

查找文件大小爲10k的文件,並刪除

wKiom1dJONniuVAXAAAJ0XqEeos314.png


locate指令:

使用權限:全部使用者

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

locate [-r ] [--regexp=]

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

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

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

說明:

locate 讓使用者能夠很快速的搜尋檔案系統內是否有指定的檔案。其方法是先創建一個包括系統內全部檔案名稱及路徑的資料庫,以後當尋找時就只需查詢這個資料庫,而沒必要實際深刻檔案系統之中了。

 在通常的 distribution 之中,資料庫的創建都被放在 contab 中自動執行。通常使用者在使用時只要用 # locate your_file_name 的型式就能夠了。

參數:

-u 

-U

創建資料庫,-u 會由根目錄開始,-U 則能夠指定開始的位置。

 

-l

 若是 是 1.則啓動安全模式。在安全模式下,使用者不會看到權限沒法看到的檔案。這會使速度減慢,由於 locate 必須至實際的檔案系統中取得檔案的權限資料

-f 

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

-q 

安靜模式,不會顯示任何錯誤訊息

-n 

至多顯示 n個輸出

-r 

使用正規運算式作尋找的條件

-o 

指定資料庫存的名稱

-d

 指定資料庫的路徑

 -h 

顯示輔助訊息

 -v 

顯示更多的訊息

 -V

顯示程式的版本訊息

範例:

locate chdrv : 尋找全部叫chdrv 的檔案 

locate -n 100 a.out :尋找全部叫 a.out 的檔案,但最多隻顯示100個

locate -u : 創建資料庫

相關文章
相關標籤/搜索