find \greo\正則表示式
阿新 • • 發佈:2021-12-21
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