歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

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

我們經常在linux要查找某個文件,但不知道放在哪裡了,可以使用下面的一些命令來搜索:
Which 查看可執行文件的位置。
whereis 查看文件的位置。
locate 配合數據庫查看文件位置。
Find 實際搜尋硬盤查詢文件名稱
which
which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which 命令,就可以看到某個系統命令是否存在,以及執行的到底是哪個位置的命令。
1.命令格式: which 可執行文件名稱
2.命令功能: which指令會在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。
例1:
查找有別名的命令時,顯示別名的信息
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/0D/wKiom1dJNciQCEidAAAMvSazs-E129.png" title="Image1.png" alt="wKiom1dJNciQCEidAAAMvSazs-E129.png" />
例如:在環境變量指定的路徑中,搜索ls命令的位置
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/0C/wKioL1dJNtHw809AAAAN8Zr-lkE127.png" title="ScreenClip2.png" alt="wKioL1dJNtHw809AAAAN8Zr-lkE127.png" />
3.命令參數:
-n  指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名。
-p  與-n參數相同,但此處的包括了文件的路徑。
-w  指定輸出時欄位的寬度。
-V  顯示版本信息
which -v
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/82/0D/wKiom1dJNeuTEm9gAAAb1lFwGq4407.png" title="ScreenClip3.png" alt="wKiom1dJNeuTEm9gAAAb1lFwGq4407.png" /> 650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="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 定位可執行文件。
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/82/0C/wKioL1dJNv2BliVcAAAKEA5PD5s493.png" title="Image4.png" alt="wKioL1dJNv2BliVcAAAKEA5PD5s493.png" />
whereis -m grep 定位幫助文件。
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/82/0D/wKiom1dJNhTDlf8LAAANLoSlF78392.png" title="Image5.png" alt="wKiom1dJNhTDlf8LAAANLoSlF78392.png" />
whereis -s grep 定位源代碼文件。
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/0C/wKioL1dJNxvj_2YtAAANLoSlF78913.png" title="Image6.png" alt="wKioL1dJNxvj_2YtAAANLoSlF78913.png" />
whereis -u grep 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/82/0C/wKioL1dJNybzsoccAAAJSnSdCVM905.png" title="Image7.png" alt="wKioL1dJNybzsoccAAAJSnSdCVM905.png" />
-B 指定搜索可執行文件的路徑。
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/82/0D/wKiom1dJNjvzVP3EAAAWq5-6LUE135.png" title="Image8.png" alt="wKiom1dJNjvzVP3EAAAWq5-6LUE135.png" />
-M 指定搜索幫助文件的路徑。
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/0D/wKiom1dJNkiCnBueAAALH0_wgzE472.png" title="Image9.png" alt="wKiom1dJNkiCnBueAAALH0_wgzE472.png" />
-S 指定搜索源代碼文件的路徑。
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" /e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/82/0C/wKioL1dJN0ujSIzeAAANr3D4pV0082.png" title="Image10.png" alt="wKioL1dJN0ujSIzeAAANr3D4pV0082.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 並輸出
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/82/0C/wKioL1dJODSRJawlAAAM2K-DswA345.png" title="Image1.png" alt="wKioL1dJODSRJawlAAAM2K-DswA345.png" />
查找當前目錄下的test.c並且顯示權限
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/82/0D/wKiom1dJN1LTU6u0AAATkUcp9fY642.png" title="Image2.png" alt="wKiom1dJN1LTU6u0AAATkUcp9fY642.png" />
查找當前目錄下的test.c並且顯示權限
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/0C/wKioL1dJOFjAAl9rAAAawb_FAiA150.png" title="Image3.png" alt="wKioL1dJOFjAAl9rAAAawb_FAiA150.png" />
4.命令選項:
-name 按照文件名查找文件(精確查找區分大小寫)
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/82/0D/wKiom1dJN2-js-aUAAAN4oC8HzE516.png" title="Image4.png" alt="wKiom1dJN2-js-aUAAAN4oC8HzE516.png" />
-iname 按照文件名查找文件(不區分大小寫)
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/0C/wKioL1dJOHnBMER0AAATpM1YcBs476.png" title="Image5.png" alt="wKioL1dJOHnBMER0AAATpM1YcBs476.png" />
-perm 按照文件權限來查找文件
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/82/0D/wKiom1dJN43xh-gVAAAlHn-7iLk367.png" title="Image6.png" alt="wKiom1dJN43xh-gVAAAlHn-7iLk367.png" />
-user 按照文件屬來查找文件。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/82/0C/wKioL1dJOJOiF0lNAAAPEvsICb4656.png" title="Image7.png" alt="wKioL1dJOJOiF0lNAAAPEvsICb4656.png" />
-group 按照文件所屬的組來查找文件
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/82/0D/wKiom1dJN6zQwnf7AAAM5hMvX3U877.png" title="Image8.png" alt="wKiom1dJN6zQwnf7AAAM5hMvX3U877.png" />
-mtime -n +n 按照文件的更改時間來查找文件
- n表示文件更改時間距現在n天以內
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/82/0C/wKioL1dJOLKxy6GBAAALOZHlrJA001.png" title="Image9.png" alt="wKioL1dJOLKxy6GBAAALOZHlrJA001.png" />
+ n表示文件更改時間距現在n天以前
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/82/0C/wKioL1dJOMSDKCdZAAANuUBRjWU659.png" title="Image10.png" alt="wKioL1dJOMSDKCdZAAANuUBRjWU659.png" />
find命令還有-atime和-ctime 選項,但它們都和-m time 選項相同
-nogroup 查找無有效所屬組的文件,即該文件所屬的組在/ etc/groups中不存在
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/0E/wKiom1dJN9jgAfzXAAAL_mvoCfo106.png" title="Image11.png" alt="wKiom1dJN9jgAfzXAAAL_mvoCfo106.png" />
-nouser 查找無有效屬主的文件,即該文件的屬主在/etc/ passwd中不存在。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/82/0E/wKiom1dJN-OAhscGAAAI0NX3qHo612.png" title="Image12.png" alt="wKiom1dJN-OAhscGAAAI0NX3qHo612.png" />
-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/82/0C/wKioL1dJOOqjUtIdAAAWvGhGUKI275.png" title="Image13.png" alt="wKioL1dJOOqjUtIdAAAWvGhGUKI275.png" />
-type 查找某一類型的文件,諸如
b - 塊設備文件
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/82/0E/wKiom1dJOAHS261IAAAGhHqrLbQ502.png" title="Image14.png" alt="wKiom1dJOAHS261IAAAGhHqrLbQ502.png" />
d - 目錄
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/82/0C/wKioL1dJOQbAioB3AAAayuNaP_U870.png" title="Image15.png" alt="wKioL1dJOQbAioB3AAAayuNaP_U870.png" />
c - 字符設備文件
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/82/0E/wKiom1dJOBnCg89vAAAGpd-CTn8522.png" title="Image16.png" alt="wKiom1dJOBnCg89vAAAGpd-CTn8522.png" />
p - 管道文件
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/82/0C/wKioL1dJOR2BAiAaAAAGrEBlqHE021.png" title="Image17.png" alt="wKioL1dJOR2BAiAaAAAGrEBlqHE021.png" />
l - 符號鏈接文件
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/82/0E/wKiom1dJODLiiTLtAAAe0vv-ZvY203.png" title="Image18.png" alt="wKiom1dJODLiiTLtAAAe0vv-ZvY203.png" />
f - 普通文件
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/0C/wKioL1dJOTaiDO7FAAAbxX14YK0051.png" title="Image19.png" alt="wKioL1dJOTaiDO7FAAAbxX14YK0051.png" />
-size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/82/0E/wKiom1dJOFCwUjm1AAAM1KZ8z6w538.png" title="Image20.png" alt="wKiom1dJOFCwUjm1AAAM1KZ8z6w538.png" />
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/82/0C/wKioL1dJOV3C-b21AAAHXNVfFFU658.png" title="Image21.png" alt="wKioL1dJOV3C-b21AAAHXNVfFFU658.png" />
-depth:在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/0C/wKioL1dJOWrD_JO8AAAMwdt6NjI693.png" title="Image22.png" alt="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 {} \;
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/0C/wKioL1dJOXnyc6otAAAjt5X8Kc4413.png" title="Image23.png" alt="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
查找當前所有目錄並排序
升序
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/82/0E/wKiom1dJOJbSqyRoAAAeDo2gVks925.png" title="Image24.png" alt="wKiom1dJOJbSqyRoAAAeDo2gVks925.png" />
降序
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/82/0E/wKiom1dJOKDzYntDAAAahsCWA3A180.png" title="Image25.png" alt="wKiom1dJOKDzYntDAAAahsCWA3A180.png" />
查找所有目錄名稱中按照”.log”結尾的目錄
]$ find / -name '*.log' -print
查找系統中最近5分鐘訪問的目錄
查找系統中最近5天訪問的文件
find / -mtime -5
查找當前目錄下所有權限為775的文件,並設置成777
find . -perm 775 -ok chmod 777 {} \;
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/82/0C/wKioL1dJOafR7XtjAABCxEaagyQ172.png" title="Image26.png" alt="wKioL1dJOafR7XtjAABCxEaagyQ172.png" />
查找文件大小為10k的文件,並刪除
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/82/0E/wKiom1dJONniuVAXAAAJ0XqEeos314.png" title="Image27.png" alt="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 : 建立資料庫
Copyright © Linux教程網 All Rights Reserved