Linux的文件查找

文件查找:數據庫

  在文件系統上查找符合條件的文件數組

  文件查找:locate(非實時查找),find(實時查找)工具

  locate:ui

    依賴於事先構建的索引,索引的構建是在系統較爲空閒時自動進行(週期性任務):手動更新數據庫spa

    索引構建過程須要遍歷整個根文件系統,極消耗資源對象

    工做特色:索引

      查找速度快資源

      模糊查找字符串

      非實時查找file

  find:

    實時查找工具,經過遍歷指定路徑下的文件系統完成文件查找:

    工做特色:

      查找速度略慢  

      精確查找

      實時查找

    語法:

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

        查找路徑:指定具體目標路徑:默認爲當前目錄

        查找條件:指定的查找標準,能夠文件名、大小、類型、權限等標準進行,默認爲找出指定路徑下的全部文件

        處理動做:對符合條件的文件作什麼操做,默認輸出至屏幕

        

        查找條件:

          根據文件名查找:

            -name 「文件名稱」:支持使用glob       *,?,[ ],[^]

            -iname 「文件名稱」:不區分大小寫

            -regex 「PATTERN」:以PATTERN匹配整個文件路徑字符串,而不單單是文件名稱

          根據屬主、屬組查找

            -user USERNAME:查找屬主爲指定用戶的文件

            group GRPNAME:查找屬組爲指定組的文件

            -uid UserID:查找屬主爲指定UID號的文件

            -gid GroupID:查找數組爲指定GID號的文件

            -nouser:查找沒有屬主的文件

            -nogroup:查找沒有屬組的文件

          根據文件類型查找:

            -type TYPE:

              f:普通文件

              d:目錄文件

              l:符號連接文件

              s:套接字文件

              b:塊設備文件

              c:字符設備文件

              p:管道文件

          組合條件:

            與:-a

            或:-o

            非:-not,!

            

            !A -a !B=!(A -o B)

            !A -o !B=!(A -a B)

 

            例如:找出/tmp目錄下,屬主不是root,且文件名不是fstab的文件:

              find /tmp \(-not -user root -a -not -name 'fstab' \) -ls

              find /tmp -not \(-user root -o -name 'fstab' \) -ls

          根據文件大小來查找:

            -size [+|-]#UNIT

              經常使用單位:k,M,G

              #UNIT:(#-1,# ]

              -#UNIT:[ 0,#-1 ]

              +#UNIT:(#,∞)

          根據時間戳:

            以「天」爲單位:

              -atime [ +|- ] #

                #:[#,#+1)

                +#:[#+1,∞]

                -#:[0,#)

              -mtime

              -ctime

          根據權限查找:

            -perm [+|-]MODE

              MODE:精確權限匹配

              +MODE:任何一類(u,g,o)對象的權限中只要能一位匹配便可

              -MODE:每一類對象都必須同時擁有爲其指定的權限標準

        處理動做:

          -print:默認的處理動做,顯示至屏幕

          -ls:相似於對查找到的文件執行「ls -l」命令

          -delete:刪除查找到的文件

          -fls /path/to/somefile:查找到的全部文件的長格式信息保存至指令文件中

          -ok COMMAND {}\:對查找到的每一個文件執行由COMMAND指定的命令,執行前都會交互式要求用戶確認

          -exec COMMAND {}\:對查找到的每一個文件執行由COMMAND指定的命令

          注意:find傳遞查找到的文件至後面指定的命令時,查找到全部符合條件的文件一次性傳遞給後面的命令,有些命令不能接受過多的參數,此命令執行可能會失敗,另外一種方式可規避此問題:

            find | xargs COMMAND

相關文章
相關標籤/搜索