Linux初學之文件查找

   Linux哲學思想有一條是一切皆文件,Linux中一切東西都以文件的形式存在。面對如此多的文件查找和處理起來比較困難。所以須要藉助一些命令來查找和定位文件。node

  文件查找:按照文件名或文件屬性來搜索文件正則表達式

 locate:數據庫

   用於模糊搜索:centos

   基於專用的數據庫進行查找,數據庫應該事先建立而且按期更新ide

   可使用updatedb命令手動更新locate數據庫ui

   查找速度較快,精確度較低spa

 find:orm

   精確查找:rem

   查找精度高,速度慢字符串

   在指定位置進行文件名或文件屬性的遍歷掃描;不建議對根目錄進行find操做

   實時查找

   使用find命令只能搜索當前用戶具備讀和執行權限的目錄

 find

   search for files in a directory hierarchy

   find [OPTIONS] [查找路徑] [查找條件] [ 處理動做]

     查找路徑:默認爲當前工做目錄,能夠指定具體的目錄路徑

     查找條件:進行本次搜索的標準,能夠是文件名,文件大小,文件類型,文件權限;默認是指定           目錄中全部文件

     處理動做:對於符合條件的文件進行處理操做;默認是將查找結果輸出到顯示器

     根據文件名查找:

       -name 文件名稱,支持使用 通配符(* ? [] [^])

       -iname 文件名稱,忽略字母大小寫,支持通配符


       根據文件的inode編號 進行查找:

        -inum inode編號:硬連接有相同的inode編號:經過給定的inode編號查找對應文件名和路徑

        -samefile name:經過給定的文件名查找對應的inode編號,進而肯定具備相同inode編號文件

        和路徑

        -link n:查找鏈接數爲n的全部文件


      根據正則表達式來匹配:

       -regex  pattern:以pattern匹配整個文件路徑字符串,而不單單是給定文件的名稱


       根據文件的屬主和屬組進行查找:

         -user uname:根據屬主爲指定用戶的用戶名進行查找

         -uid UID:根據屬主爲某個UID進行查找

         -group gname

         -gid GID


         -nogroup:在文件的額屬組上沒有對應的組名

         -nouser:在文件的屬主上沒有對應的用戶名


      根據文件理性查找

       -type 文件類型

        b:塊設備

        c: 字符設備

        d:目錄文件

        f:普通文件

        l:符號連接文件

        p:普通文件

        s:套接字文件

       -xtype 文件類型: 符號連接文件的匹配須要配合其餘選項


    根據時間戳進行查找:

      -atime  [+|-]n:根據訪問時間進行查找,以天爲單位

      -ctime  [+|-]n:根據改變時間進行查找

      -mtime  [+|-]n:根據修改時間進行查找

       n:[n-n+1)

       +n:[n+1- 以前的很長時間)

       -n:[n- now)


       -amin [+|-]n:  以分鐘爲單位

       -cmin [+|-]n

       -mmin [+|-]n

例子:查找/etc目錄下最近一週內內容修改過且不屬於root及suse用戶的文件;

          find /etc  -ctime -7 -a -user root -a -user suse

     在/ l o g s目錄中查找更改時間在5日之前的文件並刪除它們:

           find logs -type f -mtime +5 -exec    -ok    rm {} \; 


    根據文件的大小進行查找

       -size[+|-]n[cwbkMG]

         n:(n-1,n]

         -n:[0,n-1]

         +n:(n,zhengwuqiong)

       

例子:

find -size +2k

當前目錄下全部大於2KB的文件;

find -size 2k

當前目錄下全部1KB-2KB之間的文件;

find -size -2k

當前目錄下全部小於1KB的文件;


     組合條件:

      -a:邏輯與  默承認省略

      -o:邏輯或

      -not,| :邏輯非

      邏輯組合條件遵循德摩根定律

    例:查找/usr目錄下不屬於root、bin、centos等用戶的文件;

           find  /usr -not -user root -a -not -user bin -a -not -user centos


     根據權限查找:

       -perm [/|-]mode

         mode:精確匹配指定的權限

         /mode:隱含了邏輯或的關係,任何一個權限位的權限中只要有一個權限位匹配就爲真

         -mode:隱含了邏輯與的關係,每一個權限位都必須同時包含指定的權限位

例:查找/etc/rc.d/init.d目錄下,全部用戶都有執行權限而且其餘用戶有寫權限的文件;

         find /etc/rc.d/init.d -prem /111 -a  -perm -002


全部都有 取反 任意一個沒有 

! ( a與b與c ) = !a 或 !b 或 !c

全部都沒有 取反 任意一個有

! ( !a與!b與!c ) = a 或 b 或 c

      全部都有 取反  任意一個沒有

      !(a與b與c) = !a 或 !b 或!c

      全部都沒有 取反 任意一個有

      !(!a與!b與!c) = a或b或c


    處理動做:

     -print:輸出到顯示屏幕,默認的動做 

     -ls:對於查找道的結果執行 ls -li命令顯示

     -exec COMMAND {} \;  非交互式

     -ok COMMAND {} \; 交互式

        對於查找到的結果執行COMMAND命令

      {}:佔位符,用來引用被find命令查找到的全部文件的信息


      -exec和-OK的取代操做

      chmod a-r $(find -perm -444 -type f)

      find -perm -444 -type f | xargs chmod a-r

      xargs

相關文章
相關標籤/搜索