Linux 下 find(文件查找)命令的用法总结
[轉自:http://blog.chinaunix.net/uid-24648486-id-2998767]
Linux下查找文件的命令有兩個:locate?和?find
首先說下locate,locate這個命令是對其生成的數據庫進行遍歷(生成數據庫的命令:updatedb),這一特性決定了用locate查找文件速度很快,但是locate命令只能對文件進行模糊匹配,在精確度上來說差了點,簡單介紹下它的兩個選項:
??# locate?
? ? ? ?-i????????//查找文件的時候不區分大小寫?比如:locate??–i???passwd
???????-n???????//只顯示查找結果的前N行?????比如:locate??-n??5???passwd
?
下面重點說下find,find在不指定查找目錄的情況下是對整個系統進行遍歷查找
??使用格式?:???find??[指定查找目錄]??[查找規則]??[查找完后執行的action]
??[指定查找目錄]例如:
這里要注意的是目錄之間要用空格分開
? [查找規則]?
????????(1)根據文件名查找
???????????#??-name???????//根據文件名查找(精確查找)
???????????#??-iname???????//根據文件名查找,但是不區分大小寫?
?
這里另外介紹下文件名通配的知識
*表示??通配任意的字符
? ? ?
??表示??通配任意的單個字符
? ? ?
[ ]?表示?通配括號里面的任意一個字符
?????(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?連接兩個不同的條件(兩個條件必須同時滿足)
? ? ? ? ? # -o?連接兩個不同的條件(兩個條件滿足其一即可)
??????????# -not?對條件取反的
??
??? (5),根據文件時間戳的相關屬性來查找文件
??????????我們可以使用stat命令來查看一個文件的時間信息?如下:
??????
???????????#- 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文件
?
????????(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]???????????? ?//查找后執行命令的時候不詢問用戶,直接執行
?
?
?
這里要注意{}的使用:替代查找到的文件
??
?? ??#find??/tmp??-atime??+30??–exec rm –rf??{}??\;? #刪除查找到的超過30天沒有訪問過文件
?
?????我們也可以使用xargs來對查找到的文件進一步操作
????
?
?
總結
以上是生活随笔為你收集整理的Linux 下 find(文件查找)命令的用法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的大学--单片机高手郭天祥的学习心得体
- 下一篇: java gbk 内码_JAVA 中文转