which whereis locate find 用法

我們經常在linux要查找某個文件,但不知道放在哪裏了,可以使用下面的一些命令來搜索。這些是從網上找到的資料,因爲有時很長時間不會用到,當要用的時候經常弄混了,所以放到這裏方便使用。

which   在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。
whereis whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。
locate  配合數據庫查看文件位置。
find    實際搜尋硬盤查詢文件名稱。

1、which

語法:

[root@redhat ~]# which 可執行文件名稱 

例如:

[root@redhat ~]# which passwd 
/usr/bin/passwd 

which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
which指令會在環境變量$PATH設置的目錄裏查找符合條件的文件,所以基本的功能是尋找可執行文件

2、whereis

whereis指令查找符合條件的文件。這些文件的烈性應屬於原始代碼,二進制文件,或是幫助文件.
whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。

語法:

[root@redhat ~]# whereis [-bmsu] 文件或者目錄名稱 

參數說明:

-b : 只找二進制文件 
-m : 只找在說明文件manual路徑下的文件 
-s : 只找source源文件 
-u : 沒有說明文檔的文件 

例如:

[root@redhat ~]# whereis passwd 
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz 

將和passwd文件相關的文件都查找出來

[root@redhat ~]# whereis -b passwd 
passwd: /usr/bin/passwd /etc/passwd 

只將二進制文件查找出來

和find相比,locate查找的速度非常快,這是因爲linux系統會將系統內的所有文件都記錄在一個數據庫文件中,當使用locate時,會從數據庫中查找數據,而不是像find命令那樣,通過遍歷硬盤來查找,效率自然會很高。

但是該數據庫文件並不是實時更新,默認情況下時一星期更新一次,因此,我們在用locate 查找文件時,有時會找到已經被刪除的數據,或者剛剛建立文件,卻無法查找到,原因就是因爲數據庫文件沒有被更新(使用updatedb命令進行更新)。

3、 locate

語法:

[root@redhat ~]# locate 文件或者目錄名稱

例 如:

查看locate版本信息-V

root@pts/0 # locate -V
mlocate 0.22.2
Copyright (C) 2007 Red Hat, Inc. All rights reserved.
This software is distributed under the GPL v.2.

This program is provided with NO WARRANTY, to the extent permitted by law.

查看locate幫助信息

root@pts/0 # locate -h
Usage: locate [OPTION]... [PATTERN]...
Search for entries in a mlocate database.

  -b, --basename         匹配唯一的路徑名稱的基本文件名
  -c, --count            只顯示找到條目的號碼
  -d, --database DBPATH  DBPATH 用 DBPATH 替代默認的數據庫(/var/lib/mlocate/mlocate.db) 
  -e, --existing         只顯示當前存在的文件條目
  -L, --follow           當文件存在時跟隨蔓延的符號鏈接 (默認)
  -h, --help             顯示本幫助
  -i, --ignore-case      匹配模式時忽略大小寫區別
  -l, --limit, -n LIMIT  限制爲 LIMIT項目的輸出 (或 計數)
  -m, --mmap             忽略向後兼容性
  -P, --nofollow, -H     當檢查文件時不跟隨蔓延的符號鏈接
  -0, --null             輸出時以 NUL 分隔項目
  -S, --statistics       不搜索項目,顯示有關每個已用數據庫的統計信息
  -q, --quiet            不報告關於讀取數據庫的錯誤消息
  -r, --regexp REGEXP    搜索基本正則表達式 REGEXP 來代替模式
      --regex            模式是擴展正則表達式
  -s, --stdio            忽略向後兼容性
  -V, --version          顯示版本信息
  -w, --wholename        匹配完整路徑名 (默認)  

將 bug 報告給 [email protected]. 

4、 find

語法:

[root@redhat ~]# find 路徑 參數

示例:

[root@redhat ~]# find / -name zgz 
/home/zgz 
/home/zgz/zgz 
/home/weblogic/bea/user_projects/domains/zgz 
/home/oracle/product/10g/cfgtoollogs/dbca/zgz 
/home/oracle/product/10g/cfgtoollogs/emca/zgz 
/home/oracle/oradata/zgz

+++++++++++++++++++++++++++++++++++++++++++++++++++++

當我們用locate無法查找到我們需要的文件時,可以使用find,但是find是在硬盤上遍歷查找,因此非常消耗硬盤的資源,而且效率也非常低,因此建議大家優先使用whereis和locate,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。

locate 是在數據庫裏查找,數據庫大至每天更新一次。 
whereis 可以找到可執行命令和man page 
find 就是根據條件查找文件。 
which 可以找到可執行文件和別名(alias)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章