linux下find(文件查找)命令的用法總結

我們為什麼要學會使用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 //只顯示查找結果的前N行 比如:locate -n 5 passwd

下面重點說下find,find在不指定查找目錄的情況下是對整個系統進行遍歷查找

使用格式 : find [指定查找目錄] [查找規則] [查找完後執行的action]

[指定查找目錄]例如:

linux下find(文件查找)命令的用法總結

這裡要注意的是目錄之間要用空格分開

[查找規則]

(1)根據文件名查找

# -name //根據文件名查找(精確查找)

# -iname //根據文件名查找,但是不區分大小寫

這裡另外介紹下文件名通配的知識

*表示 通配任意的字符

linux下find(文件查找)命令的用法總結

?表示 通配任意的單個字符

linux下find(文件查找)命令的用法總結

[ ] 表示 通配括號裡面的任意一個字符

linux下find(文件查找)命令的用法總結

(2),根據文件所屬用戶和組來查找文件

# -user //根據屬主來查找文件

# -group //根據屬組來查找文件

(3),根據uid 和 gid來查找用戶

#find /tmp -uid 500 //查找uid是500 的文件

#find /tmp -gid 1000 // 查找gid是1000的文件

(4),-a and -o and –not的使用

# -a 連接兩個不同的條件(兩個條件必須同時滿足)

linux下find(文件查找)命令的用法總結

# -o 連接兩個不同的條件(兩個條件滿足其一即可)

# -not 對條件取反的

linux下find(文件查找)命令的用法總結

(5),根據文件時間戳的相關屬性來查找文件

我們可以使用stat命令來查看一個文件的時間信息 如下:

linux下find(文件查找)命令的用法總結

#-atime

#-mtime

#-ctime

#-amin

#-mmin

#-cmin

所以這裡atime,mtime,ctime就是分別對應的“最近一次訪問時間”“最近一次內容修改時間”“最近一次屬性修改時間”,這裡的atime的單位指的是“天”,amin的單位是分鐘

#find /tmp –atime +5 //表示查找在五天內沒有訪問過的文件

#find /tmp -atime -5 //表示查找在五天內訪問過的文件

(6),根據文件類型來查找文件

-type

f // 普通文件

d //目錄文件

l //鏈接文件

b //塊設備文件

c //字符設備文件

p //管道文件

s //socket文件

linux下find(文件查找)命令的用法總結

(7),根據大小來查找文件

-size

#find /tmp -size 2M //查找在/tmp 目錄下等於2M的文件

#find /tmp -size +2M //查找在/tmp 目錄下大於2M的文件

#find /tmp -size -2M //查找在/tmp 目錄下小於2M的文件

(8),根據文件權限查找文件

-perm

#find /tmp -perm 755 //查找在/tmp目錄下權限是755的文件

#find /tmp -perm +222 //表示只要有一類用戶(屬主,屬組,其他)的匹配寫權限就行

#find /tmp -perm -222 //表示必須所有類別用戶都滿足有寫權限

(9),-nouser and -nogroup

#find / -nogroup –a –nouser //在整個系統中查找既沒有屬主又沒有屬組的文件(這樣的文件通常是很危險的,作為系統工程師的我們應該及時清除掉)

[查找完執行的action]

# -print //默認情況下的動作

# -ls //查找到後用ls 顯示出來

# -ok [commend] //查找後執行命令的時候詢問用戶是否要執行

# -exec [commend] //查找後執行命令的時候不詢問用戶,直接執行

linux下find(文件查找)命令的用法總結

這裡要注意{}的使用:替代查找到的文件

linux下find(文件查找)命令的用法總結

#find /tmp -atime +30 –exec rm –rf {} \; #刪除查找到的超過30天沒有訪問過文件

我們也可以使用xargs來對查找到的文件進一步操作

linux下find(文件查找)命令的用法總結


後面小編會分享更多運維乾貨,感興趣的朋友可以關注一下~

linux下find(文件查找)命令的用法總結


分享到:


相關文章: