在Linux下文件查找命令有兩個---locate和find
一、locate 命令
只對其生成的數據庫經行遍歷(生成數據庫的命令updatedb),速度快但是locate只能對
文件進行模糊匹配,精度不高,非實時的
-i: //查找文件的時候不區分大小寫實例:locate -Ipasswd
-n://只顯示查找結果的前n行 實例:locate -n 5 passwd
查詢之前需要執行 updatedb命令
二、find命令
實時、精確、支持衆多查找標準、遍歷指定目錄中的所有文件完成查找,速度慢
1、使用格式:find [指定查找目錄][查找規則][查找完後執行的action]
查找路徑:默認當前路徑 查找標準:默認指定路徑下的所有文件 處理動作:默認爲顯示
例如:find /etc/tmp/root -name passwd
根據文件名查找
# -name //根據文件名查找(精確查找)
#-iname //根據文件名查找,但是不區分大小寫
#-regex PATTERN 基於正則表達式進行文件名匹配
2、文件名通配
*表示 通配的任何意義的字符
find /etc -name "*passwd*"
?表示通配任意的單個字符
find/etc -name "passwd?"
[]通配中刮號裏面的任意一個字符
find /etc/ -name "[ab].sh"
3、使用文件所屬用戶和組查找文件(uid gid)
# -user //根據屬主來查找文件
find /tmp -uid 0
# -group //根據屬組查找文件
find /tmp -gid o
4、-a and -o and-not的使用
-a :連接兩個不同條件(兩個條件必須同時滿足)
-o :連接兩個不同的條件(兩個條件滿足其中之一即可)
-not :對條件取反
find /etc/ -name "-*.sh"-a-user root
find /etc/-not -user root
find ./-not -user user1-o -not -type d
find ./ -not \( -useruser1 -a -type d \)\
5、根據時間戳的相關屬性來查找文件
stat命令查看一個文件的時間信息
stat /etc/ passwd
atime :最近一次訪問時間
mtime :最近一次內容修改時間
ctime :最近一次屬性修改時間
實例:
find /tmp -atime +5 //表示查找在5天內沒有訪問過的文件
find /tmp -atime -5 //訪問在5天內訪問過的文件
其他同理
6、根據文件類型來查找文件
-tpye
f: //普通文件
d: //目錄文件
l: //鏈接文件
b: //塊設備文件
c: //字符設備文件
p: //管道文件
s: //socket文件
find /tmp-type s
7、根據大小來查找文件
-size [+|-]
find /tmp -size 2M //查找在/tmp目錄下等於2M的文件
find /tmp -size +2M //查找在/tmp目錄下大於2M的文件
find /tmp -size -2M //查找在/tmp目錄下小於2M的文件
8、根據文件權限查找(-perm)
-perm MODE 精確查找
/MODE :任意一位匹配即滿足條件
-MODE:文件權限能完全包含此MODE時才符合條件
-644
find ./ -per1 -001
find /tmp -perm 755 //查找在/tmp目錄下權限是755的文件
find /tmp -perm +222 //表示只要有一類用戶(屬主/屬組/其他)的匹配寫權限就行
find /tmp -perm -222 //表示必須所有類別用戶都滿足有寫權限
9、-nouser and -nogroup
find / -nogrop -a -nouser //在整個系統中查找即沒有屬主又沒有屬組的文件(這樣的文件
通常很危險,應該及時清除,否則後患無窮)
10、[查找執行的action]
-print //默認情況下的動作
-ls //查找後用ls 顯示出來
-ok [commend] //查找後執行命令的時候詢問用戶是否要執行
-exec [commend] //查找後執行命令的時候不詢問用戶,直接執行
find /tmp -name "*.sh" -exec chmod u+x {}\; {} 替代查找到的文件
find /tmp -atime +30 -exec rm -rf{} \;