linux 文件查找 (locate 與 find)
阿新 • • 發佈:2018-01-27
proc let bcb ado evel .com cat uid 普通 文件查找
目錄
1.locate
2.find
一. locate
locate命令基於數據庫db,所以不能實時更新 他有如下的特點: 1.查找速度快 2.是模糊查找(可能搜到了文件,也有可能搜到了目錄) 3.是非實時的查找 4.由於權限的原因可能只查找到一部分的文件 locate 參數: -i 不區分大小寫 -n N 只列舉前N個項目 -r 支持正則表達式 locate xiaoyu 搜索名稱或路徑中帶有"xiaoyu"的文件
例:
二. find
實時查找工具,通過遍歷指定路徑完成文件查找 有如下的工作特點: 1.查找速度略慢 2.精確查找 3.實時查找 4.可能只搜索到用戶具備讀取和執行權限的目錄 find [查找路徑] [查找條件] [處理動作] 查找路徑 :制定具體目標路徑,默認為當前目錄 查找條件: 1.按搜索層級 -maxdepth level 最大搜索目錄深度,指定目錄為第一級 -mindepth level 最小搜索目錄深度
2.根據文件所屬組或所屬人
-user UserName 查找文件所屬人為指定用戶(也可以為UID)的文件
-group groupName :查找文件所屬組為指定組(也可以為GID)的文件
-uid UserId :查找屬組為指定的UID的文件
-gid GroupId :查找屬組為指定的GID的文件
-nouser :查找沒有屬主的文件 -nogroup :查找沒有屬組的文件
3.根據文件名和inode查找
-name Name :根據
-iname Nmae :不區分文件名稱大小寫
可以看到,目錄下有三個包含“xiaoyu“的文件,當執行不區分大小寫時,只顯示了一個文件,find為精確查找
-inum n :按inode號查找
-samefile name :相同inode號的inode文件
-links n :鏈接數為n的文件
註:這裏xiaoyu和XIAOYU inode號相同,故鏈接數為2. 其他鏈接數為2的均是目錄,因為有 . 和 .. 這兩個鏈接
-regex "PATTERN : 以PATTERN匹配整個文件路徑字符串,不僅僅是文件名稱
註:-regextype posix-extended 表示支持擴展正則表達式
4.根據文件類型查找
-type TYPE :
f : 普通文件
d: 目錄文件
I: 符號鏈接文件(軟鏈接)
s: 套接字文件
b: 塊設備文件
c: 字符設備文件
p: 管道文件
查找/var目錄下屬主為root,且屬組為mail的所有文件
5.組合條件
與:-a
或:-o
非:-not
6.根據文件大小來查找
-size [option]
num :(num-1,num]
-num :[0,num-1]
+num:(num,∞)
查找/etc目錄下大於1M且類型為普通文件的所有文件
7.根據時間戳:
以天為單位:
-atime 【num】(訪問時間)
num: 【num,num+1】
+num:【num+1,∞】
-num:【0,num)
-mtime (修改時間)
-ctime (文件元數據修改時間)
查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件
以分鐘為單位:
-amin 【num】(訪問時間)
num:【num,num+1】
+num:【num+1,∞】
-num:【0,num)
-mmin (修改時間)
-cmin(文件元數據修改時間)
8. 根據文件權限來查找:
-perm 【/ | -】 MODE
MODE: 精確權限匹配
/MODE:任何一類對象中的權限中只要能一位匹配就行(或關系)
當權限為大於等於5時,滿足其中任意一項即可。
-MODE:每一類對象都必須同時擁有指定權限(與關系),0表示不關註
例:find -perm 755 匹配當前目錄下權限僅為755的文件
find -perm /444 三類對象只要其中一個具有r權限就行
find -perm -444 三類對象每個都要具有r權限才可以
查找/etc目錄下所有用戶都沒有寫權限的文件
處理動作:
-print: 默認的處理動作
-ls : 類似ls命令
-delete: 刪除查找到的文件
-fls file :查找到的所有文件的長格式信息保存到指定文件中
-ok COMMAND {} \ ; 對查找到的每個文件都執行COMMAND命令,執行之前都會詢問用戶是否執行
-exec COMMAND {} \ ; 對查找到的每個文件都執行COMMAND命令,執行之前不會詢問用戶是否執行
{} 用於引用查找到的文件名稱自身
參數替換 xargs
當文件很多時,且需要後續的一些操作,搭配管道符就會出錯。xargs 可以和管道符搭配,
實現read一些命令,例如:
linux 文件查找 (locate 與 find)