文件查找就是在文件系統上查找符合條件的文件,工具名分別為:locate和find
locate是非實時查找或數據庫查找的工具;而find則是實時查找工具。
locate
locate依賴于事先構建的索引。索引的構建是在系統較為空閑時自動進行(即為周期性任務),也可以手動更新數據庫(updatedb)
注意:索引構建過程需要遍歷整個根文件系統,極其消耗資源。
它的工作特點有:查找速度快,模糊查找和非實時查找
語法:
locate KEYWORD
find
find是實時查找工具,通過遍歷指定路徑下的文件系統完成文件查找。
它的工作特點有:查找速度略慢,精確查找和實時查找
語法:
find [OPTION]… [查找路徑] [查找條件] [處理動作]
查找路徑:指定具體目標路徑,默認為當前目錄。
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行,默認為找出指定路徑下的所有文件。
處理動作:對符合條件的文件做什么操作,默認輸出至屏幕。
查找條件是根據文件名查找
-name "文件名稱" (支持使用glob)
-iname "文件名稱" :不區分字符大小寫
-regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱
根據屬主、屬組查找
-user USERNAME:查找屬主為指定用戶的文件
-group GRPNAME:查找屬組為指定組的文件
-id UserID:查找屬主為指定的UID號的文件
-gid GroupID:查找屬組為指定的GID號的文件
-nouser:查找沒有屬主文件
-nogroup:查找沒有屬組的文件
根據文件類型查找
-type TYPE
組合條件如下
與:-a
或:-o
非:-not,!
示例:找出/tmp目錄下,屬組不是root,且文件名不是fstab的文件。
find /tmp -not \( -user root -o -name 'fstab' \) -ls
根據文件大小來查找
-size [+|-]#UNIT
常用的單位有:k,m,g
#UNIT:(#-1,#)
-#UNIT:[0,#-1]
+#UNIT:(#,無限大)
根據時間戳
以 天 為單位
-atime [+|-]#
-mtime
-ctime
以分鐘為單位
-amin
-mmin
-cmin
根據權限查找
-perm [+|-]MODE
MODE:精確權限匹配
+MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可
-MODE:每一類對象都必須同時擁有為其指定的權限標準
處理動作
-print:默認的處理動作,顯示至屏幕
-ls:類似于對查找到的文件執行 "ls -l" 命令
-delete:刪除查找到的文件
-fls /path/to/somefile:查找到的所有文件的長格式信息
-ok COMMAND {}\:對查找到的每個文件執行由COMMAND指定的命令
對于每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {}\:對查找到的每個文件執行由COMMAND指定的命令
注意:find傳遞查找到的文件至后面指定的命令時,查找到的所有符合條件的文件一次性傳遞給后面的命令。有些命令不能夠接受過多參數,此時命令執行可能會失敗。
find | xagrs COMMAND 這種方式可規避此問題
原創文章,作者:黑白子,如若轉載,請注明出處:http://www.www58058.com/12687