1. 程式人生 > 其它 >find \greo\正則表示式

find \greo\正則表示式

find

根據檔案的名稱或者屬性查詢檔案

語法格式:
         find  [查詢範圍]  [引數]
引數:
-name:  按照檔案的名字查詢檔案
        *:萬用字元
-iname:按照檔案的名字查詢檔案(忽略大小寫)
-size    :按照檔案的大小查詢檔案
        + :大於
        —:小於
-mtime:按照修改的時間去查詢
+ (可以省略):n天以前
-                    :天以內
-atime
-ctime
-user:按照使用者的屬主查詢
-group:按照使用者的屬組查詢
-type :按照檔案的型別查詢
    


       d:  資料夾
        l: 連結檔案
        s: 套接字檔案
        p:管道檔案
        c:字元檔案
        b:磁碟檔案
        f:普通檔案
、
-perm : 按照檔案許可權查詢 -inum :根據index node 號碼查詢 -a : 並且 -o : 或者 -maxdeph: 查詢目的深度(必須放置與第一個引數位) -exec: 將find 處理好的結果交給其他命令繼續處理 知識儲備: dd:生成檔案 if :從什麼地方讀 of: 寫道什麼檔案中 bs: 每次寫入多少內容 count:寫入多少次 案例: 案例1:查詢/etc目錄下hosts檔案 [root@localhost ~]# find /etc/ -name '
hosts' /etc/hosts 案例2:查詢/etc目錄下名稱中包含hosts檔案 [root@localhost ~]# find /etc/ -name '*hosts*' /etc/hosts /etc/hosts.allow /etc/hosts.deny /etc/selinux/targeted/active/modules/100/denyhosts 案例3:要求把/etc目錄下,所有的普通檔案打包壓縮到/tmp目錄 [root@localhost /tmp]# tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs` 知識儲備
|:前面一個命令的結果交給後面一個命令處理 xargs : 把處理的檔案變成空格分割的一行 `` : 提前執行命令,然後結果交給其他命令來處理

grep

linusx三劍客之一文字過濾器(根據檔案內容過濾檔案)

語法格式:
grep[引數]  [匹配規則]  [操作物件]


引數  :
    
-n : 過濾文字時,將過濾出來的內容在檔案內的行號顯示出來
    -A : 匹配成功之後,將匹配行的後n行顯示出來
    -B : 匹配成功之後,將匹配行的前n行顯示出來
    -C : 匹配成功之後,將匹配行的前後各n行顯示出來
    -c :  只顯示匹配成功的行數
    -o :  只顯示匹配成功的內容
    -v :  反向過濾
    -q :  靜默輸出
    -i : 忽略大小寫
    -l :  匹配成功之後,將文字的名稱列印

        -R|-r : 遞迴匹配 

    -E : 使用拓展正則   等價於  egrep
知識儲備
       
        $?    :    上一行命令執行的結果, 0 代表執行成功  ,其他數字代表執行失敗

        wc    :    匹配行數
        -1    : 列印匹配行數
        -c     :`列印匹配的位元組數


在/etc目錄下,有多少個檔案包root
grep -rl 'root' /etc/ | wc -l

正則表示式

1.正則表示式的分類(grep )
        1.普通正則表示式
        2.拓展正則表示式
2.普通正則表示式

    ^    :    以某字元開頭
    
    $    :    以某字元結尾
    .     :    匹配出換行符之外的任意單字元
    *    :    匹配前導字元的任意個數
    []    :    某組字元的任意一個字元
    [^]  :    取反
[a-z]    :    匹配小寫字母
[A-Z]    :    匹配大寫字母
[a-zA-Z]:    匹配字母
[0-9]     : 匹配數字
\           :     取消轉義
\n         :    代表第n 個分組


3、拓展正則
    {}     :匹配的次數
        {n}        : 匹配n次
        {n,}    :至少匹配n次
        {n,m}    :匹配 n 到 m 次
        {,m}    :最多匹配m次
    +      :匹配至少有一個前導字元
    ?      : 匹配一個或零個前導字元
    |      :或



案例:
    案例1:在/etc/passwd檔案中,匹配以ftp開頭的行


                       [root@localhost tmp]# grep '^ftp' /etc/passwd
                    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

    
        案例2:在/etc/passwd檔案中,匹配以bash結尾的行
    
                [root@localhost tmp]# grep '^ftp' /etc/passwd
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    [root@localhost tmp]# grep 'bash$' /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    test09:x:1000:1000::/home/test09:/bin/bash
    test10:x:1001:1001::/home/test10:/bin/bash
    test:x:1002:1002::/home/test:/bin/bash
    test01:x:1003:1003::/home/test01:/bin/bash
    test02:x:1004:1004::/home/test02:/bin/bash 


案例3:匹配本機中有哪些ip
ip a | grep -oE ([0-9]{1,3}\.){3}[0-9]{1,3}'

案例4:要求將/etc/fstab中的去掉包含 # 開頭的行,且要求 # 後至少有一個空格
grep -vE '^#\ +' /etc/fstab

案例5:找出檔案中至少有一個空格的行
grep -E '\ +' xxx

案例6:將 nginx.conf 檔案中以#開頭的行和空行,全部刪除
grep -vE '^\ *#|^$' /etc/nginx/nginx.conf