which指令:(重要)

我們經常在linux要查詢某個⽂檔案,但不知道放在哪⾥裡了,可以
使⽤用下⾯面的⼀一些命令來搜尋:

Which 檢視可執⾏行⽂檔案的位置。
whereis 檢視⽂檔案的位置。
locate 配合資料庫檢視⽂檔案位置。
Find 實際搜尋硬碟查詢⽂檔名稱。

which命令的作⽤用是,在PATH變數指定的路徑中,搜尋某個系
統命令的位置,並且返回第⼀一個搜尋結果。也就是說,使⽤用which
命令,就可以看到某個系統命令是否存在,以及執⾏行的到底是哪⼀一
個位置的命令。
1.命令格式:
which 可執⾏行⽂檔名稱
2.命令功能:
BIT科技 僅限學習交流
which指令會在PATH變數指定的路徑中,搜尋某個系統命令
的位置,並且返回第⼀一個搜尋結果。
3.命令引數:
-n  指定⽂檔名⻓長度,指定的⻓長度必須⼤大於或等於所有⽂文
件中最⻓長的⽂檔名。
-p  與-n引數相同,但此處的包括了⽂檔案的路徑。
-w  指定輸出時欄位的寬度。
-V  顯⽰示版本資訊

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
BIT科技 僅限學習交流

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命令,在執⾏行每⼀一個命令之前,都會給出提 ⽰示,讓⽤使用者來確定是否執⾏行。

4.命令選項:
-name 按照檔名查詢檔案。
-perm 按照檔案許可權來查詢檔案。
-prune 使用這⼀一選項可以使find命令不在當前指定的⺫⽬目錄中查
找,如果同時使用-depth選項,那麼-prune將被find命令忽
略。-user 按照⽂檔案屬主來查詢檔案。
-group 按照⽂檔案所屬的組來查詢檔案。
-mtime -n +n 按照⽂檔案的更改時間來查詢檔案, - n表⽰示⽂文
件更改時間距現在n天以內,+ n表示檔案更改時間距現在n天以
前。find命令還有-atime和-ctime 選項,但它們都和-m time
選項相同。
-nogroup 查詢無有效所屬組的⽂檔案,即該檔案所屬的組在/
BIT科技 僅限學習交流
etc/groups中不存在。
-nouser 查詢無有效屬主的⽂檔案,即該檔案的屬主在/etc/
passwd中不存在。
-newer file1 ! file2 查詢更改時間⽐比⽂檔案file1新但比文
件file2舊的⽂檔案。
-type 查詢某⼀一型別的⽂檔案,諸如:
b - 塊裝置⽂檔案。
d - ⺫⽬目錄。
c - 字元裝置⽂檔案。
p - 管道⽂檔案。
l - 符號連結⽂檔案。
f - 普通⽂檔案。
-size n:[c] 查詢檔案⻓長度為n塊的檔案,帶有c時表⽰示⽂檔案⻓長
度以位元組計。
-depth:在查詢檔案時,⾸首先查詢當前目錄中的⽂檔案,然後再在其
⼦子⺫⽬目錄中查詢。
-fstype:查詢位於某⼀一型別⽂檔案系統中的檔案,這些⽂檔案系統類
型通常可以在配置檔案/etc/fstab中找到,該配置檔案中包含了
本系統中有關⽂檔案系統的資訊。
-mount:在查詢檔案時不跨越⽂檔案系統mount點。
-follow:如果find命令遇到符號連結⽂檔案,就跟蹤至連結所指向
的⽂檔案。
-cpio:對匹配的檔案使用cpio命令,將這些檔案備份到磁帶裝置
中。
另外,下⾯面三個的區別:
- 建時間來查詢檔案,-n指n天以內,+n指n天以前
例⼦子:
1. 在/ l o g s目錄中查詢更改時間在5⽇日以前的檔案並刪除它
們:
$ find logs -type f -mtime +5 -exec -ok rm {} \
2. Linux ⽤用find命令查詢檔案大⼩小為XX的⽂檔案的辦法
例如:⼀一個⽂檔案5556位元組,可以這樣寫
find /root -size -5557c -size +5555c -exec ls -ld {} \;
即查詢大於5555位元組小於5557位元組的檔案,以上查詢的是/root
⺫⽬目錄
find /root -size -500K -size +50K -exec ls -ld {} \;
查詢 小於500K,大於50K的⽂檔案