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的檔案并寫入指定檔案中
本文轉自 亮公子 51CTO部落格,原文連結:http://blog.51cto.com/iyull/1884907