查找工具locate和find
在工作中我們總是會去查找一些我們需要的內(nèi)容,然而往往這些東西總是會被大量的數(shù)據(jù)隱藏。這個時候我們就需要一些查找工具來幫我們處理這些數(shù)據(jù)幫我們快速的找到我們需要的數(shù)據(jù),在我們運(yùn)維人員的工作過程中我們更須要他來幫我們快速的解決問題。那么今天我要介紹的就是locate和find兩種查找工具。
首先要說的是locate,locate是一種非實時的查找,它依賴于事先建立的數(shù)據(jù)庫,而且索引的構(gòu)建是在系統(tǒng)較為空閑時自動進(jìn)行,還需要管理員手動進(jìn)行數(shù)據(jù)庫的更新。另外索引的構(gòu)建過程還需要遍歷真?zhèn)€根文件系統(tǒng),因此也是及其消耗資源的。locate是一種模糊查找它的的查找速度是很快的,因為它的索引庫事先已經(jīng)建立過。使用方法是:locate ?KEYWORD?
接下來就來介紹一下find查找工具,find查找工具是一種實時的查找工具,它是通過遍歷指定路徑下的文件系統(tǒng)來完成文件的查找。find的查找速度相對于locate來時較慢,但是find是精確的實時的查找。接下來給大家介紹一下find查找的語法:
find [OPTION]...[查找路徑][處理動作]
查找路徑:指定具體目標(biāo)路徑,默認(rèn)為當(dāng)前路徑。
查找條件:指定的查找標(biāo)準(zhǔn),可以文件名,大小,類型,權(quán)限等標(biāo)準(zhǔn)進(jìn)行,默認(rèn)為找出指定路徑下的
所有文件。
處理動作:就是對符合條件的文件做什么操作默認(rèn)為輸出至屏幕。?
查找條件:
搜索層級:
-maxdepth ?level ? 最大搜索目錄深度,指定的目錄為第一級。
-mindepth ?level ? 最小搜索目錄深度。
根據(jù)文件名查找:
-name ?"文件名稱" :支持使用glob
*, ?, [], [^]
-iname ?"文件名稱":不區(qū)分字母大小寫。
-regex "PATTERN" : 以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱。
根據(jù)屬組屬主查找:
-user USEERNAME :查找屬主為指定用戶的文件。
-group groupname ?:查找屬組為指定用戶的文件。
-UID ?userID ? :查找屬主為指定的UID好的文件。
-gid ?group ID : 查找屬組為指定的GID號的文件。
-Nouser :查找沒有屬主的文件。
-nogroup :查找沒有屬組的文件
根據(jù)文件類型查找:
-type TYPE:
f:普通文件
? d :目錄文件
? ?l :符號鏈接文件
? s :套接字文件
b :塊設(shè)備文件?
c :字符設(shè)備文件
p :管道文件
混合條件:
與 :-a
或 :-o
非 :-not ,!
!A ?-a !B =!(A -o B)
!A ?-o ?!B ?= !(A ?-a ?B)
例如:找出/tmp 目錄下,屬主不是root,且文件名不是fstab 的文件
find /tmp -not \(-user root ?-o ?-name ?fstab\) ? -ls
? 根據(jù)文件大小查找:
-size ? [+|-]#unit
常用單位:G , M , K ?, c(byte)
#UNIT :(#-1,#] ?表示大于#-1,小于等于#。
-#UNIT :[0,#-1] ? 表示大于0,小于等于#-1.
+#UNIT :[# oo ] ? 表示大于#。
根據(jù)時間戳:
以天為單位:
-atime(表示訪問時間,讀取時更新) ? [+|-]#
#: ?[# ?,#-1)
+# :[#+1 , oo]
-# ?:[0 ,#)
?-mtine(表示數(shù)據(jù)修改時間)
?-ctime(原數(shù)據(jù)修改時間)
以分鐘為單位:
-amin
-mmin
-cmin
根據(jù)權(quán)限查找:
-perm ?[ / | -]MODE
MODE:精確權(quán)限匹配
/MOD :任何一類(u ,g ,o)對象的權(quán)限只要能一位匹配即可,“/”是或關(guān)系,+從centos7開始淘汰,centos6及其之前的系統(tǒng) / + 均可使用。
-MODE:每一類對象都必須同時擁有有指定的權(quán)限與關(guān)系。
處理動作:
-print ?:磨人的處理動作,顯示至屏幕。
-ls :類似于對查找到的文件執(zhí)行“l(fā)s -l” 命令
-delete :刪除查找到的文件。
例如:find ?-size +6k ?-delete
-fls file ?:查找到的所有文件的長格式信息保存至指定文件中。
-ok ?-exce ? ok交互式 , exce 直接運(yùn)行
例如:find ?-name ?"*.tmp" ?-ok ?-f ?{} ?\;
由于很多命令不支持管道來傳遞參數(shù),而日常工作中有這個必要,所以就有了xargs命令。
xargs用于產(chǎn)生某個命令的參數(shù),xargs可以讀入stdin的數(shù)據(jù),并且可以空格符或回車符將stdin的數(shù)據(jù)分隔成為arguments
注意:文件名或只是其他意義的名詞內(nèi)含有空格的情況,而且有些命令不能接受過多參數(shù),命令執(zhí)行可能會失敗,xargs可以解決。
示例:
ls |xargs ?rm
find /sbin -perm ?+700 |ls -l 這是個錯誤的命令
改為:find ?/sbin ? -prem ?+700 |xargs ?ls ?-l
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/sanqianfanhua01/p/8386903.html
總結(jié)
以上是生活随笔為你收集整理的查找工具locate和find的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2012第二届GIS制图大赛——公开课技
- 下一篇: HALCON示例程序distance_t