本文主要記錄Linux常用指令中的檔案搜尋指令,如下。
- 檔案搜尋指令locate
- 指令搜尋指令 whereis 與which
- 檔案搜尋指令 find
- 字元串搜尋指令grep
- find指令與grep的差別
1 檔案搜尋指令locate
locate [filname]
locate指令搜尋檔案是基于背景資料庫搜尋的,在背景資料庫中按檔案名搜尋,搜尋速度更快是以比find那種需要掃描所有地方的指令的搜尋速度要快些,且消耗資源比較小。
背景資料庫目錄 /var/lib/mlocate 一天一更新,是以對于剛建立的檔案,使用該指令進行查找将會搜尋不到所建立的檔案。這個時候若想使用該指令查找檔案,使用指令updatedb更新資料庫即可。這裡需要使用管理者權限喲。。
updatedb
linux版本不同目錄可能不同 可使用locate locate指令查找相關檔案
/etc/updatedb.conf 配置檔案,配置篩選規則 locate\whereis\which指令會按照這個配置檔案搜尋檔案,
PRUNE_BIND_MOUNTS = "yes"
#開啟搜尋限制 yes 表示配置項全生效 no 表示配置項不生效
PRUNEFS =
#搜尋時,不搜尋的檔案系統
PRUNENAMES =
#搜尋時,不搜尋的包含這些關鍵字的檔案
PRUNEPATHS =
#搜尋時,不搜尋這些路徑下更新的檔案
優點:搜尋速度快
缺點:隻能按照檔案名來搜尋
2 指令搜尋指令whereis /which
#whereis /which檢視的都是外部安裝的指令 不能檢視shell内部指令 比如cd
#whereis搜尋指令所在路徑及幫助文檔所在位置
選項:
-b 隻查找可在執行檔案
-m 至查找幫助檔案
舉個例子 查找ls指令
/bin/ls 代表指令檔案 /usr/share/man/man1/ls.1.gz代表幫助文檔
想要這條指令幹嘛的 whatis ls
# which 指令檢視指令的所在位置 ,若指令有别名也會顯示别名
3 檔案搜尋指令 find
指令 :
find [搜尋範圍] [搜尋條件]
#避免大範圍搜尋,會非常耗費資源
# find是在系統中搜尋符合條件的檔案名,如果需要比對,使用通配符比對,通配符是完全比對
find /root -iname install.log
#不區分大小寫
find /root -user root
#按照所有者來搜尋
find /root -nouser
#查找沒有所有者的檔案
find /var/log -mtime +10
#查找十天前修改的檔案
-10 10天内修改的檔案 10 10天當天修改的檔案 +10十天前修改的檔案
atime 檔案通路時間 ctime 改變檔案屬性 mtime 修改檔案内容
find /etc -size 25k
#搜尋指定檔案大小的檔案 k是小寫 M是大寫
知道i節點檢視檔案名
find /root -inum i節點
條件
-a and邏輯與
-o or 邏輯或
-exec/-ok 指令 {} \; #對搜尋結果執行操作
舉個栗子:
#查找/etc/目錄下,大于20KB且小于40KB的檔案
#查找/etc/目錄下,大于20KB且小于40KB的檔案,并且顯示詳細資訊
4 grep指令
# 在指定的檔案中所搜符合條件的字元串
grep [選項] 字元串 檔案名
選項:
- i 忽略大小寫
-v 排除指定字元串
5 find指令與grep的差別
- find指令:在系統當中搜尋符合條件的檔案名,如果比對,使用通配符比對,通配符是完全比對
- grep指令:在檔案當中搜尋符合條件的字元串,如果需要比對,使用正規表達式進行比對,正規表達式包含比對