1. 程式人生 > >Linux下4個查詢命令which、whereis、locate、find的總結

Linux下4個查詢命令which、whereis、locate、find的總結

本人是Linux的初學者,由於在使用Linux的過程中經常受到各種相似命令工具使用的困擾,遂萌生寫此總結。Linux下查詢相關命令主要有以下4個:which、whereis、locate、find。

(1)which   [-a]    cmdname1 cmdname2 ......

           作用:locate a command,從環境變數PATH中,定位/返回與指定名字相匹配的可執行檔案所在的路徑

           原理:執行which命令時,which會在當前環境變數PATH依次尋找能夠匹配所找命令名字的可執行檔名,不加-a選項,返回第一個匹配的可執行檔案的路徑,否則依                        次返回滿足條件的所有可執行檔案的路徑名。

           適用場合:一般用於查詢命令/可執行檔案所在的路徑。有時候可能在多個路徑下存在相同的命令,該命令可用於查詢當前所執行的命令到底是哪一個位置處的命令。 

           

(2)whereis    [-bmsu]    filename1  filename2 .......

          作用:locate the binary, source, and manual page files for a command.即:定位/返回與指定名字匹配的二進位制檔案、原始檔和幫助手冊檔案所在的路徑。

          原理:whereis命令首先會去掉filename中的字首空格和以.開頭的任何字元,然後再在資料庫(var/lib/slocate/slocate.db)中查詢與上述處理後的filename相匹配的二進                         制檔案、原始檔和幫助手冊檔案,使用之前可以使用updatedb命令手動更新資料庫。

          適用場合:二進位制檔案、原始檔和幫助手冊檔案路徑的查詢。

          

(3)locate    [option]    filename1 filename2 ......

         作用:find files by name from one or more databases prepared by updatedb. 同whereis指令一樣,也是從資料庫建立的索引中查詢,不同的是該命令查詢所有部分匹配的檔案,使用之前可以使用updatedb命令手動更新資料庫。

         原理:預設情況下(當filename中不包含萬用字元*),locate會給出所有與*filename*相匹配的檔案的路徑。

         適用場合:沒有檔案型別性質的模糊查詢(你只記得某個檔案的部分名稱)。

         

(4)find    [option]    [path1  path2  ......]    [filename]

          引數說明:

                     時間查詢引數:

                                 -atime  n: 將n*24小時內access過的檔案列出來

                                 -ctime   n: 將n*24小時內狀態發生改變的檔案列出來

                                 -mtime  n: 將n*24小時內被修改過的檔案列出來

                                 -newer file: 把比file還要新的檔案列出來

                      名稱查詢引數:

                                 -gid   n:  尋找群組ID為n的檔案

                                 -group name: 尋找群組名稱為name的檔案

                                 -uid   n:  尋找擁有者ID為n的檔案

                                 -user name:  尋找擁有者名稱為name的檔案

                                 -name file:    尋找檔名為file的檔案(可以使用萬用字元)

  作用:search for files in a directory hierarchy. 從當前目錄遞迴的搜尋檔案。

          原理:遍歷當前工作目錄及其子目錄,find命令是在硬碟上遍歷查詢,非常耗硬碟資源,查詢效率相比whereis和locate較低。

          適用場合:能用which、whereis和locate的時候儘量不要用find.

          

          4個命令的比較如下表所示: