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

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

HERE 相同 所在 pat 建立 手動 src TP 原理

(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個命令的比較如下表所示:

技術分享圖片

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