一.locate(搜索文件)
1.命令格式
locate 文件名
說明:locate命令不在系統中搜索文件(即不遍歷整個系統),而是在/var/lib/mlocate(centos7中為此目錄,可使用locate locate命令查看此目錄路徑)數據庫中搜索,/var/lib/mlocate數據庫默認每天更新一次,要查找新創建的文件就要去更新(通過updatedb命令)此數據庫后再進行搜索
2.優點
在后台數據庫中按文件名進行搜索,所以搜索速度快
3.缺點
只能按文件名搜索
4.注意
locate按照配置文件/etc/updatedb.conf進行搜索,配置文件的內容如下圖

PRUNE_BIND_MOUNTS = "yes" 表示開啟搜索限制
PRUNE_BIND_MOUNTS = "no" 表示關閉搜索限制
PRUNEFS 表示搜索時不搜索的文件系統
PRUNENAMES 表示搜索時不搜索的文件類型
PRUNEPATHS 表示搜索時不搜索的路徑
二.whereis(搜索命令)
1.命令格式
whereis 命令名
說明:搜索外部命令所在路徑及幫助文檔所在位置(Linux的shell內置命令不能通過whereis找到命令路徑,只能看到幫助文檔的路徑,如pwd、cd)
-b 只查看命令所在位置(即命令的可執行文件)
-m 只查找幫助文檔所在位置

三.which(搜索命令)
1.命令格式
which 命令名
說明:搜索外部命令所在路徑及別名(不是所有命令都有別名,Linux的shell內置命令無法用此命令)

注意:
在Linux中要想執行一個命令需要用絕對路徑,由於系統定義了環境變量PATH(即系統搜索命令的路徑),當執行一個命令時,會在PATH指定的路徑中搜索是否有這樣一個執行文件或者腳本存在(因為環境變量的存在,所以系統命令可以不打絕對路徑),若自己定義了一個執行文件需要執行時就要打上絕對路徑,或者把執行文件的路徑放在PATH環境變量下。linux下查看環境變量:

四.find(搜索文件)
1.命令格式
find [搜索范圍] [搜索條件]
說明:find命令對文件進行搜索的時候完全匹配文件名,若想進行模糊搜索則使用通配符匹配
Linux中通配符有 :* 匹配任意內容
? 匹配一個任意字符
[] 匹配中括號內任一字符
2.示例
在根目錄下搜索名為initial-setup-ks.cfg的文件,注根目錄下搜索相當於遍歷根目錄,會耗費資源

在/root目錄下利用通配符分別搜索文件名為以a、b開頭以任意字符結尾的文件

-name 按照文件名完全匹配搜索
-iname 按照文件名不區分大小寫搜索
-user 按照所有者進行搜索,后面為Linux的登錄賬戶名
-nouser 查找沒有所有者的文件(不是所有的沒有所有者的文件都是垃圾文件,內核產生的根目錄proc、sys路徑下的,或者外來文件即外接盤內的文件會沒有所有者,但不是垃圾文件)
-mtime 按照修改的時間范圍搜索文件
![]()
![]()
![]()
-atime 根據文件的訪問時間搜索
-ctime 根據文件屬性改變的時間搜索
-size 根據文件大小搜索
-inum 根據文件的i節點搜索

查找root目錄下大於10k小於30k的文件(-a 表示與and,-o表示或or)
![]()
查找root目錄下大於10k小於30k的文件並顯示文件詳細信息(-exec 命令 {} \; 對搜索結果進行操作)
![]()
五.grep(搜索字符串)
1.命令格式
grep [選項] 字符串 文件名
說明:grep命令是在文件中搜索符合條件的字符串,如需匹配使用正則表達式進行包含匹配
2.選項
-i 忽略大小寫
-v 排除指定的字符串
