什么是文件查找 在文件系統中查找符合條件的文件;
文件查找分為: 實時查找:遍歷所有文件進行條件匹配(find) 非實時查找:根據索引查找(locate)
locate ? 查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db ? 依賴于事先構建的索引; 索引的構建是在系統較為空閑時自動進行(周期性任務);管理員手動更新數據庫(updatedb); ? 索引構建過程需要遍歷整個根文件系統,極消耗資源; ? 工作特點: 查找速度快; 模糊查找; 非實時查找 搜索的是文件的全路徑,不僅僅是文件名 可能只搜索用戶具備讀取和執行權限的目錄
locate命令 ? 有用的選項 -i 執行區分大小寫的搜索 -n X 只列舉前X個匹配項目 ? locate foo 搜索名稱或路徑中帶有“ foo”的文件 ? locate -r ‘\.foo$’ 使用Regex來搜索以“ .foo”結尾的文件
find 實時查找工具,通過遍歷指定路徑完成文件查找; 工作特點: 查找速度略慢 精確查找 實時查找 可能只搜索用戶具備讀取和執行權限的目錄
find命令 語法: ? find [OPTION]... [查找路徑] [查找條件] [處理動作] 查找路徑:指定具體目標路徑;默認為當前目錄 查找條件:指定的查找標準,可以文件名、大小、類型、 權限等標準進行;默認為找出指定路徑下的所有文件 處理動作:對符合條件的文件做操作,默認輸出至屏幕
查找條件 根據文件名和inode查找: -name "文件名稱":支持使用glob *, ?, [], [^] -iname "文件名稱":不區分字母大小寫 -inum n 按inode號查找 -samefile name 相同inode號的文件 -links n 鏈接數為n的文件 -regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱 根據屬主、屬組查找: -user USERNAME:查找屬主為指定用戶(UID)的文件 -group GRPNAME: 查找屬組為指定組(GID)的文件 -uid UserID:查找屬主為指定的UID號的文件 -gid GroupID:查找屬組為指定的GID號的文件 -nouser:查找沒有屬主的文件 -nogroup:查找沒有屬組的文件 根據文件類型查找: -type TYPE: f: 普通文件 d: 目錄文件 l: 符號鏈接文件 s:套接字文件 b: 塊設備文件 c: 字符設備文件 p: 管道文件 組合條件: 與: -a 或: -o 非: -not, ! 德·摩根定律: 非(P 且 Q) = (非 P) 或 (非 Q) 非(P 或 Q) = (非 P) 且 (非 Q) !A -a !B = !(A -o B) !A -o !B = !(A -a B) 根據文件大小來查找: -size [+|-]#UNIT 常用單位: k, M, G #UNIT: (#-1, #],如: 6k -#UNIT: [0,#-1], 如: -6k +#UNIT: (#,∞), 如: +6k 根據時間戳: 以“天”為單位; -atime [+|-]#, #: [#,#+1) +#: [#+1,∞] -#: [0,#) -mtime -ctime 以“分鐘”為單位: -amin -mmin -cmin 根據權限查找: -perm [/|-]MODE MODE: 精確權限匹配 /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系, + 從centos7開始淘汰 -MODE:每一類對象都必須同時擁有指定權限,與關系0 表示不關注 find -perm 755 會匹配權限模式恰好是755的文件 只要當任意人有寫權限時, find -perm +222就會匹配 只有當每個人都有寫權限時, find -perm -222才會匹配 只有當其它人( other)有寫權限時, find -perm -002才會匹配
處理動作 -print:默認的處理動作,顯示至屏幕; ? -ls:類似于對查找到的文件執行“ ls -l”命令 ? -delete:刪除查找到的文件; ? -fls file:查找到的所有文件的長格式信息保存至指定文件中 ? -ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令; 對于每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令 ? {}: 用于引用查找到的文件名稱自身 ? find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令 ? 有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題 find | xargs COMMAND
原創文章,作者:RecallWzc,如若轉載,請注明出處:http://www.www58058.com/35704