文件查找工具之——find

    前言:Linux一切皆文件,在linux的系統中如果我們需要找到所需的文件,除了一步一步慢慢找,還有一種辦法就是要使用Linux中查找文件工具命令,能讓我們很快定位到我們所需的文件。所以我們必須要學好文件查找工具


一、首先我們先要了解文本搜索和文件查找的區別

    文本搜索:根據用戶所指定的PATTERN、字符對文本文件中的內容進行過濾和匹配。常用的工具有"grep"、"egrep"、"fgrep"

    文件查找:根據文件的各個屬性去匹配相對應的文件。常用工具有"find"、"locate"


二、對于文件查找的工具區別

    首先我們要了解文件查找的2中方法

        1、實時查找:是遍歷對所有文件進行條件匹配。常用命令:"find"

            優點:能精確查找和匹配,而且能實時查找到最新的文件。

            缺點:速度比較慢

        2、非實時查找:是根據索引數據庫進行查找。常用命令:"locate"

            優點:查找速度快

            缺點:①非精確查找,而且是屬于模糊查找

                   ②必須依賴索引數據庫才可以,而且在構建索引時相當占用時間和資源

    小貼士:索引數據庫的創建更新是在系統空閑時并使用每日任務進行的,所以無法實時找到最新的文件。若想立即更新索引數據庫,可以執行命令:updatedb


三、find 用法

    find [option] …[查找路徑] [查找條件] [處理動作]

        各參數的默認值:

      • 查找路徑:默認為當前路徑

      • 查找條件:默認為指定路徑下的所有文件

      • 處理動作:默認為顯示在屏幕上

        1、查找路徑

            1.1、絕對路徑

    [root@eric ~]# find /tmp/test "*p*"

            1.2、相對路徑

    [root@eric tmp]# find ./test "*p*"

        2、查找條件

            2.1、 -name "指定文件名稱"

                備注:支持使用globbing(通配符)字符

                    *:任意長度的任意字符

                    ?:任意單個字符

                    []:指定范圍內的任意單個字符

                    [^]:指定范圍外的任意單個字符

    [root@eric tmp]# find /etc/ -name "p*[0-9]*"   表示在/etc/路徑下找包含"p"開頭并且包含"數字"的所有文件

            2.2、-iname "指定文件名稱" :查找時不區分大小寫,默認是區分大小寫的。

    [root@eric tmp]# find /etc/ -iname "p*"

            2.3、-user USERNAME :查找時根據文件屬主查找

            2.4、-group GROUPNAME:查找時根據文件的屬組查找

    [root@eric tmp]# find /home/ -user user1

            2.5、-uid UID : 查找時根據文件的屬主的UID查找

            2.6、-gid GID :查找時根據文件的屬組的GID查找

    [root@eric tmp]# find /home/ -gid 600

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

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

    [root@eric tmp]# find / -nouser

            2.9、-type TYPE :根據文件類型查找

                -f:普通文件

                -d:目錄文件

                -l:符號鏈接

                -b:塊設備

                -c:字符設備    

                -s:套接字文件

                -p:命名管道

    [root@eric tmp]# find /etc/ -type d -name "p*[0-9]*"

            2.10、-size [ + | – ]#UNIT:根據文件大小來查找

                UNIT:代表的是單位。常用單位;k,M,G

                #   :代表的是數字

                +   :代表的是大于

                –   :代表的是小于 

find -size 原理.png

            例子:以 # = 9 , UNIT = k

測試find -size.png

            2.11、-perm [ + | – ] MODE :根據文件權限查找

                MODE:代表用戶對該文件的權限,即 r(4) ,w(2) ,x(1)

                    MODE:代表與MODE權限都要精確匹配

                    +MODE:代表任何一類用戶的權限只要包含對其指定的任意一個權限滿足即可   

                    -MODE:每一類用戶指定的權限都被必須被包含,并且是完全包含

find -perm.png

            2.12、根據時間戳查找

                2.12.1、以"天"為單位

                    -atime [ + | – ] # :根據訪問時間進行查找

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

                    -ctime [ + | – ] # :根據狀態改動時間查找

                2.12.2、以"分鐘"為單位
                    -amin [ + | – ] # :根據訪問時間進行查找

                    -mmin [ + | – ] # :根據修改時間進行查找 

                    -cmin [ + | – ] # :根據狀態改動時間查找

find -atime原理.png

            例子:  以 # 為 4  使用atime

find atime 練習.png

            代表的意思:

                +4 :代表大于等于5天前訪問過的文件

                -4 :代表小于等于4天前訪問過的文件

                 4 :代表4 ~ 5 這一天訪問過的文件

            2.13、根據組合條件查找 

                指是在條件語句語句中執行邏輯運算

                    與:-a        指必須同時滿足(默認值就是-a,所以-a可以不填)

                    或:-o        指滿足其中一個即可

                    非:-not \ !  指條件取反

find組合.png

        小貼士:上面例子最后的一個例子也可以使用下面的方法

    [root@eric test1]# find ./ -not \( -iname "*r*" -o -group tuser602 \)

        3、處理動作

            3.1、-print: 默認處理動作,顯示在在屏幕

            3.2、-ls   :相當于 ls -l (備注:在使用于組合條件時會有點問題)

            3.3、-exec :運行命令,對查找到的文件執行某個命令

                -exec COMMAND{} \;  (備注: \; 表示結束  {} 表示引用了文件的本身)

    [root@eric test1]# find ./ -perm -001 -exec chmod o-x {} \;  //將權限符合 -001的所有文件權限改成 o-x
    [root@eric test1]# find ./ -perm +200 -a -type f -a -not -name "*.*" -exec mv {} {}.txt \;  //將當前路徑下沒有后綴的所有文件都加上.txt后綴

            3.4、-ok   :使用交互式執行命令 

                -ok COMMAND {} \;

            小貼士:find 一次性查找所有符合條件的所有文件,并一同傳遞給-exec或-ok后面所指定的命令;但是,有些命令不能接受過長的參數:因此這時應該使用另一種方法

                    find | xargs COMMAND   意思是找到一個處理一個

        [root@eric test1]# find /tmp -name core -type f -print | xargs /bin/rm -f

四、總結

    find 的使用格式

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

            查找路徑:絕對路徑,相對路徑    

            查找條件:-name , -iname , -user , -group , -uid , -gid , -nouser , -nogroup , -size ,-perm

                根據時間戳查找: -mtime , -ctime , atime , -amin , -mmin , -cmin

                根據組合條件查找: -a , -o , -not , !

            處理動作: -print , -ls , -exec , -ok 

原創文章,作者:螃蟹,如若轉載,請注明出處:http://www.www58058.com/6016

(0)
螃蟹螃蟹
上一篇 2015-07-06 09:22
下一篇 2015-07-06 17:28

相關推薦

  • week1

    一,計算機的組成 五大基本部件 運算器:  算術運算,邏輯運算等各種各樣的運算的, 控制器:  控制總線的使用權限,內存尋址 控制權限訪問是讀還是寫               寄存器,內部的存儲器,都是用來存儲數據的  加速和提高cpu性能   &…

    Linux干貨 2016-10-28
  • 搭建雙主模型lpvs的高可用集群

    一、實驗要求: 1、基于LVS-DR模型上實踐; 2、調度器高可用(雙主模型); 二、實驗拓撲圖: 三、實驗步驟: 1、  設置RS (a)設置http主頁 Yum install httpd Vim /var/www/html/index.html <h1>172.18.24.3 server 1或者172.18.24.5server…

    2017-05-15
  • 馬哥教育面授班22期:第一天課程練習

    Linux發展史:        1984年:Richard Stallman發起GNU項目和自由軟件基金會創建開源的UNIX實用工具版本        創建通用公共許可證(GPL)        1991年:Linux Torvalds發…

    Linux干貨 2017-05-16
  • 20160802課堂練習題

    練習: 1、  當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 無法cd進入該目錄,但可以ls查看到該目錄下的文件,其余的任何操作都執行不了。 2、  當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 能夠進入該目錄,不能讀取到信息;但如果知道有哪些文件及目錄是可以創建…

    Linux干貨 2016-08-04
  • 圖解 lvs 工作原理

    一.lvs 基本工作流程介紹  如圖1,ipvsadm定義lvs服務監聽的ip和port,并發送給ipvs,而ipvs是工作在netfilter的input鉤子上的程序,當input鏈中有目標ip屬于lvs服務的請求報文時,ipvs就會修改該報文的鏈路,使其不進入用戶空間而直接轉到postrouting鏈上,并轉發給其中一臺real server,…

    Linux干貨 2016-10-30
欧美性久久久久