1. 程式人生 > >linux查詢命令which、whereis、find比較解析

linux查詢命令which、whereis、find比較解析

which

命令格式

which --help
Usage: /usr/bin/which [options] [--] COMMAND [...]
Write the full path of COMMAND(s) to standard output.

作用

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

原理

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

適用場合

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

whereis

用法:
 whereis [選項] 檔案

選項:
 -b         只搜尋二進位制檔案
 -B <目錄>  定義二進位制檔案查詢路徑
 -m         只搜尋 man 手冊
 -M <目錄>  定義 man 手冊查詢路徑
 -s         只搜尋原始碼
 -S <目錄>  定義原始碼查詢路徑
 -f         終止 <目錄> 引數列表
 -u         搜尋不常見記錄
 -l         輸出有效查詢路徑

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

find

用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

預設路徑為當前目錄;預設表示式為 -print
表示式可能由下列成份組成:操作符、選項、測試表達式以及動作:

操作符 (優先順序遞減;未做任何指定時預設使用 -and):
      ( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
      EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2

positional options (always true): -daystart -follow -regextype

normal options (always true, specified before other expressions):
      -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
      --version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race

比較測試 (N 可以是 +N 或 -N 或 N): -amin N -anewer FILE -atime N -cmin N
      -cnewer 檔案 -ctime N -empty -false -fstype 型別 -gid N -group 名稱
      -ilname 匹配模式 -iname 匹配模式 -inum N -ipath 匹配模式 -iregex 匹配模式
      -links N -lname 匹配模式 -mmin N -mtime N -name 匹配模式 -newer 檔案
      -nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN
      -readable -writable -executable
      -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
      -used N -user NAME -xtype [bcdpfls]
      -context 文字


操作: -delete -print0 -printf 格式 -fprintf 檔案 格式 -print 
      -fprint0 檔案 -fprint 檔案 -ls -fls 檔案 -prune -quit
      -exec 命令 ; -exec 命令 {} + -ok 命令 ;
      -execdir 命令 ; -execdir 命令 {} + -okdir 命令 ;

作用

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

原理

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

適用場合

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

which whereis find對比

在這裡插入圖片描述