find
find
命令準確,但速度非常慢,它可以查找任何類型的文件
使用格式如下
find [指定目錄] [指定條件] [指定動作]
參數說明
- [指定目錄]: 所要搜索的目錄及其所有子目錄。默認爲當前目錄
- [指定條件]: 所要搜索的文件的特徵
- [指定動作]: 對搜索結果進行特定的處理
常用的[指定條件]
- -name:按文件名來查找文件
- -user:按照文件的屬主來查找文件
- -group:按照文件所屬的組來查找文件
- -perm:按照文件權限來查找文件
- -prune:不在當前指定目錄中查找
常用的[指定動作]
- -print:將匹配的文件輸出到標準輸出
- -exec:對匹配的文件執行該參數所給出的shell命令
- -ok:和-exec的作用相同,在執行每一個命令之前,讓用戶來確定是否執行
find
命令不加任何參數時,表示搜索路徑爲當前目錄及其子目錄,默認的動作爲-print
,即不過濾任何結果,也就是說輸出所有的文件
使用實例
遞歸搜索當前目錄中,所有以file
開頭的文件
find . -name 'file*'
遞歸搜索當前目錄中,所有以file
開頭的文件,並顯示它們的詳細信息
find . -name 'file*' -ls
locate
locate
命令可以說是find -name
的另一種寫法,但是要比後者快得多,原因在於它不搜索具體目錄,而是搜索一個數據庫/var/lib/locatedb
,這個數據庫中含有本地所有文件信息
Linux自動創建這個數據庫,並且每天自動更新一次,所以使用locate
命令查不到最新變動過的文件。爲了避免這種情況,可以在使用locate
之前,先使用updatedb
命令,手動更新數據庫
使用格式如下
locate [參數] <文件名>
使用實例
搜索etc
目錄下所有以file
開頭的文件
locate /etc/file
搜索用戶主目錄下,所有以f
開頭的文件,並且忽略大小寫
locate -i ~/f
whereis
whereis
命令只能搜索特定格式的文件
使用格式如下
whereis [參數] <文件名>
可搜索的文件類型
- 二進制文件(-b)
- 源代碼文件(-s)
- 說明文件(-m)
如果省略參數,則返回所有信息
使用實例
找出名爲find
的文件位置
whereis find
which
which
命令的作用是,在PATH
變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果
也就是說,使用which
命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令
使用格式如下
which <命令>
使用實例
查找find
命令的位置
which find
type
type
命令其實不能算查找命令,它是用來區分某個命令到底是由shell
自帶的,還是由shell
外部的獨立二進制文件提供的
如果一個命令是外部命令,那麼使用-p
參數,會顯示該命令的路徑,相當於which
命令
使用格式如下
type <命令>
使用實例
type cd
系統會提示,cd
是shell
的自帶命令build-in
type grep
系統會提示,grep
是一個外部命令,並顯示該命令的路徑
type -p grep
加上-p
參數後,就相當於which命令
感覺比較好用的是locate命令,速度非常快,還能達到find命令一樣的準確,只需要先用updatedb命令更新數據庫