文件查找工具

文件查找

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

    比較實用的兩個文件查找工具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
下一篇 2016-08-21

相關推薦

  • Linux下常用安全策略設置的六個方法

    安全第一”對于linux管理界乃至計算機也都是一個首要考慮的問題。加密的安全性依賴于密碼本身而非算法!而且,此處說到的安全是指數據的完整性,由此,數據的認證安全和完整性高于數據的私密安全,也就是說數據發送者的不確定性以及數據的完整性得不到保證的話,數據的私密性當無從談起! 1. 禁止系統響應任何從外部/內部來的ping請求攻擊者一般首先通過ping命令檢測此…

    Linux干貨 2017-07-31
  • Linux基礎知識(三)

     本文的主要內容是:  1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。  2、取出最后登錄到當前系統的用戶的相關信息。  3、取出當前系統上被用戶當作其默認shell的最多的那個shell。  4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全…

    Linux干貨 2016-10-03
  • 磁盤管理(二)Raid與LVM邏輯卷

    概述:本章主要講解raid和邏輯卷 什么是RAID RAID:Redundant Arrays of Inexpensive(Independent) Disks 1988年由加利福尼亞大學伯克利分校( University ofCalifornia-Berkeley) “ A Case for RedundantArrays of Inexpensive …

    Linux干貨 2016-09-05
  • MAN手冊使用指南及快捷鍵鍵位整理

      MAN手冊使用指南及快捷鍵鍵位整理 Man mnual 手冊說明          基本使用:man 命令 Man一共可分為八個章節: man1,man2,man3,man4……man8 1:用戶命令 2:系統調用 3:C庫調用 4:設備文件及特殊文件 5:文件格式…

    Linux干貨 2016-10-18
  • FTP基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制

    前言 vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序,特點是小巧輕快,安全易用,目前在開源操作系統中常用的FTP套件主要有proftpd、pureftp、ServU和wu-ftpd等。本文將講解vsftpd的基本功能和如何基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制。 基礎配置介紹 工作原理 狀態響應碼 1xx:信息碼 2xx…

    2015-04-20
  • centos7從最小化安裝到圖形界面

    man /etc/inittab
    systemctl get-default
    sytemctl set-default graphical.target|multi-user.target
    yum install $a -y

    2017-12-09
欧美性久久久久