linux下find(文件查找)命令的用法总结
前言:我們?yōu)槭裁匆獙W(xué)會(huì)使用find命令?
?
每一種操作系統(tǒng)都有成千上萬的文件組成,對(duì)于linux這樣“一切皆文件”的操作系統(tǒng)來說更不例外,大家應(yīng)該都能很輕松使用windows下的文件查找功能,但是對(duì)linux這一功能可能并不是很熟悉,其實(shí)想玩linux的你更要牢牢掌握這個(gè)命令,因?yàn)?/span>linux不像windows那樣有固定的文件名后綴,并且因?yàn)?/span>linux陣營(yíng)下百家爭(zhēng)鳴的特性,一個(gè)相同的文件在不同的發(fā)行版,可能會(huì)有不同,所以如果你能牢牢掌握find命令的使用,你在摸索linux的道路上將會(huì)順利很多,同時(shí)你會(huì)發(fā)現(xiàn)linux下文件查找功能其實(shí)很簡(jiǎn)單,而且要比windows下查找功能強(qiáng)大很多很多!好,下面進(jìn)入正題
?
Linux下查找文件的命令有兩個(gè);locate?和?find
?
首先說下locate,locate這個(gè)命令是對(duì)其生成的數(shù)據(jù)庫(kù)進(jìn)行遍歷(生成數(shù)據(jù)庫(kù)的命令:updatedb),這一特性決定了用locate查找文件速度很快,但是locate命令只能對(duì)文件進(jìn)行模糊匹配,在精確度上來說差了點(diǎn),簡(jiǎn)單介紹下它的兩個(gè)選項(xiàng):
??#locate?
?????????????-i????????//查找文件的時(shí)候不區(qū)分大小寫?比如:locate??–i???passwd
???????-n???????//只顯示查找結(jié)果的前N行?????比如:locate??-n??5???passwd
?
下面重點(diǎn)說下find,find在不指定查找目錄的情況下是對(duì)整個(gè)系統(tǒng)進(jìn)行遍歷查找
?
??使用格式?:???find??[指定查找目錄]??[查找規(guī)則]??[查找完后執(zhí)行的action]
?
??[指定查找目錄]例如:
這里要注意的是目錄之間要用空格分開
? [查找規(guī)則]?
????????(1)根據(jù)文件名查找
???????????#??-name???????//根據(jù)文件名查找(精確查找)
???????????#??-iname???????//根據(jù)文件名查找,但是不區(qū)分大小寫?
?
這里另外介紹下文件名通配的知識(shí)
?
*表示??通配任意的字符
?
??????????
??表示??通配任意的單個(gè)字符
?????????
[ ]?表示?通配括號(hào)里面的任意一個(gè)字符
?????(2),根據(jù)文件所屬用戶和組來查找文件
???????????#??-user?????????//根據(jù)屬主來查找文件
???????????#??-group????????//根據(jù)屬組來查找文件
?
?
??????????(3),根據(jù)uid?和?gid來查找用戶
???????????#find??/tmp??-uid??500??//查找uid是500?的文件
???????????#find??/tmp??-gid??1000 //?查找gid是1000的文件
?
?
??????????(4),-a??and??-o??and??–not的使用
???????????# -a?連接兩個(gè)不同的條件(兩個(gè)條件必須同時(shí)滿足)
?
???
????????? # -o?連接兩個(gè)不同的條件(兩個(gè)條件滿足其一即可)
??????????# -not?對(duì)條件取反的
??????
??
???? (5),根據(jù)文件時(shí)間戳的相關(guān)屬性來查找文件
??????????我們可以使用stat命令來查看一個(gè)文件的時(shí)間信息?如下:
?
?????????????????#-atime
???????????#-mtime
???????????#-ctime
???????????#-amin
???????????#-mmin
???????????#-cmin
?
?? 所以這里atime,mtime,ctime就是分別對(duì)應(yīng)的“最近一次訪問時(shí)間”“最近一次內(nèi)容修改時(shí)間”“最近一次屬性修改時(shí)間”,這里的atime的單位指的是“天”,amin的單位是分鐘??
?
???????? ?#find??/tmp??–atime??+5???????????//表示查找在五天內(nèi)沒有訪問過的文件
??????????#find??/tmp??-atime??-5????????????//表示查找在五天內(nèi)訪問過的文件
??????????
??????????(6),根據(jù)文件類型來查找文件
????????????????-type
??????????????????????f?????//?普通文件
??????????????????????d?????//目錄文件
??????????????????????l?????//鏈接文件
??????????????????????b?????//塊設(shè)備文件
??????????????????????c?????//字符設(shè)備文件
??????????????????????p?????//管道文件
??????????????????????s?????//socket文件
?
??
?
????????(7),根據(jù)大小來查找文件
?
???????????????-size
?
??????????#find??/tmp??-size???2M???????????//查找在/tmp?目錄下等于2M的文件
??????????#find??/tmp??-size??+2M???????????//查找在/tmp?目錄下大于2M的文件
??????????#find??/tmp??-size??-2M???????????//查找在/tmp?目錄下小于2M的文件
?
?
???????????(8),根據(jù)文件權(quán)限查找文件
?
??????????????-perm
?
??????????#find??/tmp??-perm??755???????????//查找在/tmp目錄下權(quán)限是755的文件
??????????#find??/tmp??-perm??+222??????????//表示只要有一類用戶(屬主,屬組,其他)的匹配寫權(quán)限就行
??????????#find??/tmp??-perm??-222??????????//表示必須所有類別用戶都滿足有寫權(quán)限
?
???????????(9),-nouser??and??-nogroup
?
??????????#find??/??-nogroup –a –nouser???????//在整個(gè)系統(tǒng)中查找既沒有屬主又沒有屬組的文件(這樣的文件通常是很危險(xiǎn)的,作為系統(tǒng)工程師的我們應(yīng)該及時(shí)清除掉)
?
??[查找完執(zhí)行的action]
?
?????????# -print?????????????????????????????? ??//默認(rèn)情況下的動(dòng)作
?????????# -ls???????????????????????????????? ? ??//查找到后用ls?顯示出來
?????????# -ok??[commend]????????????? ??//查找后執(zhí)行命令的時(shí)候詢問用戶是否要執(zhí)行
? ??????# -exec [commend]???????????? ?//查找后執(zhí)行命令的時(shí)候不詢問用戶,直接執(zhí)行
?
?這里要注意{}的使用:替代查找到的文件
?
???? ??#find??/tmp??-atime??+30??–exec rm –rf??{}??\;?#刪除查找到的超過30天沒有訪問過文件
?
?????我們也可以使用xargs來對(duì)查找到的文件進(jìn)一步操作
?????
?
………………………………………………………………………………………ok! ?轉(zhuǎn)載于:https://blog.51cto.com/cgsxxj/1828392
總結(jié)
以上是生活随笔為你收集整理的linux下find(文件查找)命令的用法总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个失败的操作系统MULTICS
- 下一篇: 设计模式(行为型模式)——访问者模式(V