locate和find

locate和find

      在linux中最常用的搜索命令有locate和find,現在我來介紹locate和find

      locate 非實時性查找,是根據數據庫模糊匹配,而且匹配結果的字符串在整個路徑中都有可能出現。
           Locate  –i 忽略大小寫
                      -n  N顯示匹配到的前N個文件
           locate對應的數據庫,可以用updatedb來更新locat的數據庫,查找到的數據可能不存在,因爲數據在不停變化,而數據庫則只在固定的時間更新。
           find 的使用:
                      find [DIR1,DIR2……] [criteria,……] [action……]

                 eg: find /etc  -user  root  -exec ls –l {} \;

                 [ criteria ] :
                      -name 精確匹配
                      -iname 不區分大小寫
                      -user 文件的創建者
                      -group   文件所屬的組
                       組合多個條件時:

                             -a  邏輯與(也是默認的)
                             -o  邏輯或
                            -not     邏輯非
                 在使用時可以使用()但需要轉義即\( \)中間寫入想放  在一起的命令。
                      按權限查找:
                            -perm  nnn   表示精確匹配權限是nnn的文件
                                        -nnn  表示包含了nnn權限的文件
                                        /nnn    表示三組權限中三種權限(rwx)                                                       中只要有任意權限的就匹配到
                      文件大小查找:
                            -size N+單位  表示小於1單位的文件
                                    +N+單位   表大於N單位的文件
                                    -N+單位      表小於N單位的文件但大於                                                           N-1的文件
                            其單位有k,b,M,G。
                      類型查找:
                            -type f,d,c,l,b,p,s,分別表示:普通文件,目錄文件,字符文件,連接文件,塊兒文件,命名管道文件,套接字文件
                      根據時間查找:
                            -amin       訪問時間(分鐘)
                            -cmin       更改元數據時間
                            -mmin      更改數據內容時間
                            同樣還有 atime爲天數
                                  後面的參數方式相同,有 N ,+N,-N

                            分別表示在第N分鐘(天)在N分鐘(天)之   前在N天之內
           [action]

                      -exec        後可以直接跟linux對文件操作的命令不過要以 \; 結束,其中執行的命令不需要  確認直接執行
                      -OK          同-exec相同,但強制確認,尤其是對刪                                           除,移動的操作
                      -ls       列出文件的詳細信息
                      -print        輸出(是默認的方式)
           eg: find /tmp -atime -6 -exec mv {} {}.old \;

           意爲對訪問時間大於6天的文件重命名後加.old

           eg: find /tmp  -not  -perm /111 –name “*.sh” -exec chmod +x {} \;

           對沒有執行權限的shell腳本加上執行權限
           eg: find /  -not \( -user  root –o  -user  bin –o –user                       redhat \) –ls

           顯示系統中非root bin redhat 三個用戶的文件


 

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