3.1-find命令詳解

文件查找:

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

    locate

        依賴於事先構建的索引,索引的構建是在系統較爲空閒時自動進行(週期性任務):手動更新數據庫(updatedb)在生產服務器上禁用,索引構建過程需要遍歷整個根文件系統,極其消耗資源

        工作特點:

            非實時查找(數據庫查找)

            查找速度快(索引查找)

            模糊查找

        locate KEYWORD


    find

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

        工作特點:

            實時查找

            查找速度略慢

            精確查找

        find [OPTION]... [查找路徑] [查找條件] [處理動作]

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

            查找條件:指定的查找標準,以文件名,大小,類型,權限等標準進行,默認爲找出指定路徑下的所有文件

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


            查找文件

                根據文件名查找:

                    -name "文件名稱":支持使用glob

                        *,?,[],[^]

                    -iname "文件名稱":不區分字母大小寫,支持使用glob

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

                根據屬主,屬組查找:

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

                    -group GROUPNAME:查找屬組爲指定用戶的文件

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

                    -gid GroupID:查找屬組爲指定UID號的文件

                    -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

                        例如:-size +3k

                        常用單位(UNIT):k,M,G

                            #UNIT:(#-1,#]  -->假如#號替換爲3則(3-1,3]-->相當於大於2小於等於3

                            -#UNIT:[0,#-1]

                            +#UNIT:(#,oo)

                根據時間戳來查找:

                    以“天”爲單位:

                    #:[#,#+1)

                    +#:[#+1]

                    -#:(0-#)

                        -atime [+|-]#

                        -mtime

                        -ctime

                     以“分鐘”爲單位

                        -amin

                        -mmin

                        -cmin

                根據權限查找:

                    -perm [/|-]MODE

                        MODE:精確權限匹配

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

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

                            -666

                                766:符合

                                760:不符合

                處理動作:

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

                    -ls:類似於對查找到的文件執行"ls -l"命令

                    -delete:刪除查找到的文件

                    -fls /PATH/TO/SOMEFILE:查找到的所有文件的長格式信息保存至指定文件中

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

                        對於每個文件執行命令之前,都會交互式要求用戶確認

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

                        對於每個文件執行命令之前,不會要求用戶確認

                        {}:用於引用查找到的文件名稱自身

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

                    find | xargs COMMAND


練習:

    1.查找/var目錄下屬主爲root,且屬組爲mail的所有文件或目錄

    2.查找/usr目錄下不屬於root,bin或hadoop的所有文件或目錄

    3.查找/etc目錄下最近一週內其內容修改過,同時屬主不爲root,也不是hadoop的文件或目錄

    4.查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件或目錄

    5.查找/etc目錄下大於1M且類型爲普通文件的所有文件或目錄

    6.查找/etc目錄下所有用戶都沒有寫權限的文件

    7.查找/etc目錄下至少有一類用戶沒有執行權限的文件

    8.查找/etc/init.d目錄下,所有用戶都有執行權限,且其他用戶有寫權限的文件



                    

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章