文件查找工具

文件查找

    我們常常需要知道哪個文件放在哪里,才能夠對該文件進行一些修改或維護等動作。 有些時候某些軟件配置文件的文件名是不變的,但是各發行版 放置的目錄則不同。 此時就得要利用一些搜尋指令將該配置文件的完整文件名捉出來,這樣才能修改。

    比較實用的兩個文件查找工具locate和find。

    locate 是利用數據庫(數據庫每天由系統自動更新)來搜尋文件名,特點是查找速度快,模糊查找,非實時查找。find 是很強大的搜尋指令,但時間花用的很大,精確查找而且是實時查找?。ㄒ驗?find 是直接遍布硬盤查找)

locate

    這個 locate 使用很簡單,直接在后面輸入“文件的部分名稱”后,就能夠得到結果。

    -b:只匹配路徑中的基名

    -c:統計出共有多少個符號條件的文件

    -r:BRE,支持基本正則表達式

    updatedb:構建locate查找索引

    注意:索引構建過程需要遍歷整個根文件系統,極消耗資源:

find:

    實時查找工具,通過遍歷指定起始路徑下文件層級結構完成文件查找;選項眾多,功能比locate強大很多

    語法:

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

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

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

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

        查找條件        

    根據文件名和inode查找:

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

        -iname "文件名稱":不區分字母大小寫

        -inum n 按inode號查找

        -samefile name 相同inode號的文件

        -links n 鏈接數為n的文件

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

    示例

    1.png

    2.png

    3.png   

    根據屬主、屬組查找:

        -user USERNAME:查找屬主為指定用戶(UID)的文件

        -group GRPNAME: 查找屬組為指定組(GID)的文件

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

        -gid GroupID:查找屬組為指定的GID號的文件

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

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

    示例

    1.png

    2.png

    3.png 

    blob.png   

    blob.png

    blob.png

    根據文件類型查找:
        -type TYPE:
        f: 普通文件
        d: 目錄文件
        l: 符號鏈接文件
        s:套接字文件
        b: 塊設備文件
        c: 字符設備文件
        p: 管道文件

    示例

    blob.png

    blob.png

    blob.png

    根據文件大小來查找:
        -size [+|-]#UNIT
        常用單位: k, M, G
        #UNIT: (#-1, #]
        如: 6k 表示(5k,6k]
        -#UNIT: [0,#-1]
        如: -6k 表示[0,5k]
        +#UNIT: (#,∞)
        如: +6k 表示(6k,∞

    示例,  注意:5K的意思就是4-5K之間的大小

    blob.png

    blob.png

        注意:-5K的意思是0-4K之間的大小      

    blob.png

    blob.png

        注意:+5k的意思是5-∞

    根據時間戳:
    以“天”為單位;
        -atime [+|-]#, 以4為天的單位   
        #: [#,#+1)

        4是代表4-5那一天的文件文件名

        +#: [#+1,∞]

        +4代表大于等于5天前的文件名

        -#: [0,#)

        -4代表小于等于4天內的文件文件名

        -mtime
        -ctime

    示例:最近2天內被訪問過的文件

    blob.png

    以“分鐘”為單位:
        -amin
        -mmin
        -cmin

    根據權限查找:

        -perm [/|-]MODE

        MODE: 精確權限匹配
        /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系, + 從centos7開始淘汰
        -MODE:每一類對象都必須同時擁有指定權限,與關系,0 表示不關注        
        find -perm 755 會匹配權限模式恰好是755的文件
        只要當任意人有寫權限時, find -perm +222就會匹配
        只有當每個人都有寫權限時, find -perm -222才會匹配
        只有當其它人( other)有寫權限時, find -perm -002才會匹配

    示例    精確搜索權限 要求文件必須權限必須777

    blob.png
          /444 搜索文件中任何一位u,g,o中任意一個擁有4權限位都滿足搜索條件 

    blob.png
        -444 搜索文件中每一個u,g,o都必須同時擁有4權限才滿足,任何一個u,g,o沒有4權限即不滿足搜索條件

    blob.png

    組合條件:
        與: -a
        或: -o
        非: -not, !
    德·摩根定律:
        (非 P) 或 (非 Q) = 非(P 且 Q)
        (非 P) 且 (非 Q) = 非(P 或 Q)

        not A or not B = not (A and B)

        not A and not B = not (A or B)
        非A而且非B就是非(A或B)

        非A或非B就是非(A和B)
    具體我們還是來示例吧

    如果我要查找一個屬主不是root而且屬主也不是gdm的文件;

    find /home -not -user root -not -user gdm ;這里的意思就是 非A且非B,上邊我們說了非A且非B=非(A或B),那就有另外一種方式

    find /home -not \( -user root -o -user gdm \);這就是非A且非B=非(A或B)啦,記死格式就偶了

    如果我要找一個屬主不是root或者屬主不是gdm的文件

    find /home -not -user root -o -not -user gdm;這里的意思就是非A或非B,上邊提到非A或非B=非(A和B),那就有另外一種方式

    find /home -not \( -user root -a -user gdm \);這就是非A或非B=非(A和B)。

    處理動作

        最簡單的處理動作有 ;-ls -delete -fls -ok cmd {} \;(-ok cmd {} \;)處理的沒一個動作都會與用戶交互;而且處理動作的執行與的關系優先與或的關系

        exec COMMAND {} \; 對查找到的每個文件執行由
        COMMAND指定的命令
        {}: 用于引用查找到的文件名稱自身
        find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令
        有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題
        find | xargs COMMAND
           

    示例

    將查找的文件的長格式信息保存到另外一個文件中

    blob.png

    將查找到文件的長格式信息打印出來

    blob.png
    將查找到的所有以f為行首的文件全部刪除掉

    blob.png

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

    blob.png
   

    2、查找/var目錄下不屬于root、lp、gdm的所有文件

    blob.png

    blob.png

    3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

    blob.png

    

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

    注意:因為與的優先級比或的優先級高所有或要用括號擴起來

    blob.png

    5、查找/etc目錄下大于1M且類型為普通文件的所有文件

    blob.png

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

    所有都沒有的反面是至少有一類有

    blob.png

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

    blob.png

    至少有一類沒有的反面是所有都有

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

    blob.png

 

原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/36075

(0)
M20-1馬星M20-1馬星
上一篇 2016-08-21 20:42
下一篇 2016-08-21 20:45

相關推薦

  • htop/vmstat/dstat/ps命令的使用

    Linux htop/vmstat/dstat/ps命令的使用 htop命令 htop工具在系統光盤這中是沒有的,所以要下載的小伙伴們要自己創建yum倉庫通過epel 安裝 創建yum倉庫 vim /etc/yum.repos.d/epel.repo [epel] name=Fedora EPEL baseurl=https://mirrors.tuna.t…

    2017-08-28
  • 使用Nmap掃描系統風險點

    0x00 迅速了解Nmap Nmap是一款掃描目標網絡信息的工具,可以是黑客用來探測主機信息,收集情報的神器。也可以是運維人員掃描網絡環境,及時發現系統漏洞的好幫手。 0x01 它的功能 1、主機發現(Host Discovery)#探測目標網絡環境中有哪些主機是可以進行通信的,當然你也可以用ping命令試一下 2、端口掃描(Port S…

    Linux干貨 2015-04-19
  • vim簡單總結

    編輯器種類 常用的文本編輯器有: 行編輯器,如sed,awk,cut等 全屏編輯器,如vi,vim(vi增強版),nano等 vim的模式 命令模式:使用vim filename打開文件后,進入的第一個模式。 直接使用鍵盤操作文本的編輯 插入模式:INSERT模式 進入:i,從當前光標處開始 進入:I,從當前行行首開始 末行模式:vim內置命令接口。 以:開…

    Linux干貨 2016-08-18
  • N25期第六周作業

    請詳細總結vim編輯器的使用并完成以下練習題 1.復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加# sed -r 's/^[^[:space:]]+/#&/g' /tmp/rc.sysinit :%s/^[^[:space:]]\+/#&a…

    Linux干貨 2016-12-26
  • Shell腳本中循環淺析

    在shell腳本中,循環是很重要的一環。循環可以不斷的執行某個程序段落,直到用戶設置的條件達成為止。在shell中,除了這種依據判斷時達成與否的不定循環之外,還有另外一種已經固定要跑多少次的循環,可稱之為固定循環。下面,我們主要對for,while,until三種循環做一下介紹。   一、for循環 For循環是給定變量列表的固定次數循環,其執行機…

    Linux干貨 2016-08-21
  • grub詳解

    grub詳解 1、GRUB(Boot Loader): grub:grub 0.x:grub1 legacy傳統的版本 grub 1.x:grub2 grub legacy: 第1階段:mbr 第1.5階段:mbr之后的扇區中,讓第一階段中的boot loader能識別第二階段所在分區上的文件系統 第2階段:磁盤分區(/boot/grub/) 配置文件/et…

    2017-09-03
欧美性久久久久