天天看點

linux基礎--檔案查找

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