find

locate;

     模糊查找;

     基於專用的數據庫進行查找,數據庫應該事先創建,並且定期更新

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

     查找速度非常快,查找精確到非常有限


   find 

      精確查找;

         查找精度高,速度慢;

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


         實時查找

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


         find命令的用法

            find - search for files in a directory hierarchy

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

                查找路徑;默認爲當前工作目錄可以指定具體的目錄的路徑

                查找條件;進行本次搜索的標準,可以是文件名,文件大小,文件類型,文件權限等等;默認是指定目錄中的所有文件。

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


            根據文件名查找;

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

              -iname 文件名稱 忽略字母大小寫,支持使用globbing,(*,?,[],[^])


            根據文件的indo編號查找;

              -inum indo編號;通過給定的indo編號查找對應的文件名字及路徑;

              -samefile name;通過給定的文件名查找對應的indo編號,進而確定所有具有該indo便哈珀的文件名及路徑

              -links n;查找鏈接數爲n的所有文件;

            根據正則表達式查找;

              -regex pattrn;以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;[now,n]

             以分鐘爲單位;

               -amin [+|-]n;根據訪問時間查找,以分鐘爲單位

               -cmin [+|-]n;根據改變時間查找,以分鐘爲單位

               -mmin [+|-]n;根據修改時間查找,以分鐘爲單位


            根據文件的大小進行查找;

              -size [+|-]n[cwbkMG]

                n;(n-1,n]

                -n;[0,n-1]

                +n;(n,+∞)

          

                例子;

                 find -size +2k

                   當前目錄下所有大於2KB的文件

                 find -size 2K

                   當前目錄下所有1KB-2KB之間的文件;

                 find -size -2K

                    當前目錄下所有小於1KB的文件


            組合條件;

               -a;邏輯與

               -o;邏輯或

               -not,l;邏輯非


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

                 非(A 與 B) == 非A 或 非B

                 非(A 或 B) == 非A 與 非B


              根據權限查找;

                -perm [/|-]mode

                  mode;精準匹配指定的權限

                  /mode;隱含了邏輯或的關係,任何一個權限位的權限中只要能有一個權限位匹配,即可滿足條件

                  -mode;隱含了邏輯與的關係,沒一個權限位的權限中都必須同時包含指定權限位,才能滿足條件


              所有都有,取反 任意一個沒有   

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

              所以都沒有,取反 任意一個有

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


            處理動作;

              -print;輸出到顯示屏幕,默認的動作

              -ls;對與查找到的結果執行ls -li命令顯示

              -exec COMMAND{}\;

              -ok COMMAND{}\:

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

                 區別;

                   -exec是非交互式的

                   -ok是交互式的

                  {};佔位符,用來引用被find命令查找到的所有文件的路徑信息


-exec和-ok的取代執行操作:

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

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


注意:管道輸送的是純字符串信息,所以如果管道之後的命令不是處理字符串的命令,需要使用xargs命令將其轉換成能夠被後面命令處理的參數;


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