前言:我們為什麼要學會使用find指令?
每一種作業系統都有成千上萬的文件組成,對於linux這樣「一切皆文件」的作業系統來說更不例外,大家應該都能很輕鬆使用windows下的文件查找功能,但對linux這項功能可能不是很熟悉,其實想玩linux的你更要牢牢掌握這個命令,因為linux不像windows那樣有固定的文件名後綴,並且因為linux陣營下百家爭鳴的特性,一個相同的文件在不同的發行版,可能會有不同,所以如果你能牢牢掌握find指令的使用,你在摸索linux的道路上將會順利很多,同時你會發現linux下文件查找功能其實很簡單,而且要比windows下查找功能強大很多很多!好,下面進入正題
Linux下查找文件的命令有兩個;locate 和 find
首先說下locate,locate這個命令是對其生成的資料庫進行遍歷(個生成的命令:updatedb) ,這一特性決定了用locate查找文件速度很快,但是locate命令只能對文件進行模糊匹配,在精確度上來說差了點,簡單介紹下它的兩個選項:
#locate
- i //查找文件的時候不區分大小寫 例如:locate –i passwd
-n passwd
下面重點說下find,find在不指定查找目錄的情況下是整個系統遍歷查找
使用格式 : find [指定查找目錄] [查找規則] [
這裡要注意的是目錄之間要用空格分開
[查找規則]
//依檔案名稱尋找(精確尋找)
# - iname //依檔案名稱尋找,但不區分大小寫
這裡另外介紹下檔案名稱通配的知識
*表示任意的字元?表示 通配任意的單字
[ ] 表示 通的任意一個字元 user //根據屬主來找文件 # -group //以屬組中尋找文件 和 gid來找出使用者#find /tmp -uid 500 //「找出uid文件
#find /tmp -gid 10000 // 尋找gid是1000的檔案 and -o and –not的使用
# -a 連結兩個不同的條件(兩個條件必須同時滿足)
# -o 連接兩個不同的條件(兩個條件滿足其一即可)
(5),根據文件時間戳記的相關屬性來查找文件
我們可以使用stat指令來檢視一個文件的時間資訊 #-mtime
#-ctime
#-amin #-mminatime,mtime,ctime就是分別對應的“最近一次訪問時間”“最近一次內容修改時間”“最近一次屬性修改時間”,這裡的atime的單位指的是「天」,amin的單位是分鐘
#find
#find /tmp -atime - 5 //表示在五天內尋找的文件-type
d //目錄檔案
文件
b ///塊裝置檔案 //字元裝置文件
p s //socket檔案
7),以一般方式尋找文件 🎠 #find /tmp -size 2M #find /tmp -size +2M //以/tmp 目錄下的2M tmp -size -2M //以在2M中尋找的檔案 -perm / /尋找在/tmp目錄下權限是755的檔案 #find /tmp -perm#find /tmp -perm -222 (9),-nouser and -nogroup
#find / -nogroup –a –nouser #find / -nogroup –a –nouser #find / -nogroup 在整個系統中尋找既沒有屬主又沒有屬組的文件(這樣的文件通常是很危險的,作為系統工程師的我們應該及時清除掉)
[查找完執行的action]
-print //尋找後執行指令的時候詢問使用者是否要執行
# -exec [ commend] –exec rm –rf {} ; #刪除查找到的超過30天沒有訪問過文件
我們也可以使用xargs來進一步對查找到的文件