locate
非實時,模糊查找,查找根據全系統文件數據庫進行。
updatedb:手動生成文件數據庫
優點:速度快
find
實時查找,精確查找。
語法:
find [查找路徑] [查找標準] [處理動作]
查找路徑:默認爲當前目錄
查找標準:默認爲指定路徑下所有文件
處理動作:默認爲顯示
選項[查找標準]:
-name 'FILENAME':對文件名做精確匹配
文件名通配*、?、[]
-iname 'FILENAME':對文件名匹配不區分大小寫
-regex PATTERN:基於正則表達式查找
根據文件屬性查找
-user USERNAME:根據屬主查找
-group GROUPNAME:根據屬組查找
-uid UID:根據UID查找
-gid GID:根據GID查找
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
根據文件類型查找
-type:根據文件類型查找
f:普通文件
d:目錄
s:套接字文件
c:字符設備
b:塊設備
l:鏈接文件
p:管道設備
根據文件大小查找
-size:根據文件大小查找
[+|-]#k:查找大於#k或者小於#k的文件
根據邏輯與或非查找
-a:表示and,同時滿足,默認就爲與操作
-o:表示or,滿足一個顯示
-not:表示不滿足的顯示
根據時間查找
-mtime +#:查找修改時間大於#天的文件
-#:查找修改時間小於#天的文件
-atime +#:查找訪問時間大於#天的文件
-ctime +#:查找狀態改變時間大於#天的文件
-mmin +#:找修改時間大於#天分鐘的文件
根據權限查找
-perm MODE:根據權限查找文件,使用MODE表示精確查找
-perm -mode:表示每一位權限都必須精確匹配
-perm /mode:表示9位權限中有任何一位匹配都匹配查找
find動作:
-print:默認值,顯示
-ls:類似ls -l的形式顯示匹配後每一個文件的詳細信息
-ok COMMAND {} \; 匹配後執行命令。注:此處必須使用;爲結束符,否則爲語法錯誤,{}爲文件名稱佔位符
-exec COMMAND {} \; 匹配後執行命令。注:此處必須使用;爲結束符,否則爲語法錯誤,{}爲文件名稱佔位符
例:find ./ -type f -exec chmod o-w {} \;
查找當前目錄下類型爲文件的文件,並刪除其他用戶的寫權限。
find ./ -mtime +7 -exec rm -rf {} \;
查找當前修改目錄下時間大於7天的文件,並刪除
擴展命令
xargs:從標準輸入接受命令並執行
使用管道接受,不需要使用{}佔位符,也無需\;結尾
例子:
find /etc -size +1M -exec echo {} >> /tmp/etc.bak \;
find /etc -size +1M |xargs echo >> /tmp/etc.bak
上述兩種命令都可以實現查找/etc下大於1M的文件並寫入指定文件中