雜集:淺談linux中find、locate、whereis、which等文件查詢命令

在日常使用linux系統的過程中,我們會經常需要在系統中查找一個文件,那麼在Linux系統中如何準確高效的確定一個文件在系統中的具體位置。提供如下幾種命令。

1、 find命令

man find

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

格式:

find

:所要搜索的目錄及其所有子目錄[默認為當前目錄]。

:所要搜索的文件的特徵。

:對搜索結果進行特定的處理。

即:

find pathName -options [-print -exec -ok]

注意:

如果什麼參數都不加,find默認搜索當前目錄及其子目錄,並且不過濾任何結果。

常用的option選項:

-name:按文件名來查找文件。

-user:按照文件的屬主來查找文件。

-group:按照文件所屬的組來查找文件。

-perm:按照文件權限來查找文件。

-prune:不在當前指定目錄中查找。

案例:

1.1、

find /etc/ -name 'passwd'

查看/etc/目錄及其子目錄下passwd文件

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

1.2、

find /etc/ -path /etc/pam.d -prune -o -name 'passwd' -print

排除/etc/pam.d目錄下的passwd

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

1.3、

find . -name '*.sh' -ls

查看當前目錄及以下.sh結尾的文件並以ls輸出

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

1.4、

find . -perm 700 -ls

查看當前目錄及子目錄下權限為700的文件

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

補充:

find在尋找數據的時候相當的耗硬盤,請見whereis與locate。

2、 locate命令

其實是"find -name"的另一種寫法,比後者快得多,原因是它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),這個數據庫中含有本地所有文件信息。

補充:

Linux系統自動創建這個數據庫,每天自動更新一次,所以使用locate命令查不到最新變動過的文件。

注意:

為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。

man locate

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

案例:

2.1、

locate ~/*.sh

搜索用戶家目錄下以.sh結尾的文件

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

2.2、

在用戶家目錄的myShell目錄新創建一個DEMO文件

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

locate -i ~/General/myShell/de

以不區分大小寫de去查詢

並未查詢到DMEO文件

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

updatedb

locate -i ~/General/myShell/de

下圖所示:

查出來了我們剛剛創建的DEMO文件

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

補充:

每次文件更新和刪除之後,未執行updatedb,數據庫中保存的文件信息不會改變。

例如:

新建一個文件,未執行updatedb,用locate搜索不到新建的文件。

同理:

刪除一個文件,未執行updatedb,用locate照樣能搜索到該文件的信息。

3、 whereis 命令

下圖標紅描述:

whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。

如果省略參數則返回所有的信息。

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

案例:

以我們find為例

whereis find

返回了所有信息

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

whereis -m/b/s find

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

4、 which命令

在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。

使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。

案例:

打印一下PATH

echo $PATH

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

查看一下我們java命令的位置

which java

下圖該路徑就在我們的PATH變量中

雜集:淺談linux中find、locate、whereis、which等文件查詢命令

測試完成

歡迎大家給予寶貴的意見或者建議。

歡迎大家補充或者共享一些其他的方法。

感謝支持。


分享到:


相關文章: