Linux基礎 find/grep/sed/awk 四大命令

find [path...] [options] [action] 默認選項爲 在當前目錄查找全部文件並顯示linux

    -L 跟隨符號連接查找文件正則表達式

1 根據文件名查找shell

    -name FILENAME 支持glob數組

    -iname FILENAME 不區分大小寫 支持glob編輯器

    -regex PATTERN 正則表達式文件名匹配函數

2 根據用戶查找ui

    -user USERNAME 根據屬主查找命令行

    -group GROUPNAME 根據屬組查找ip

    -uid UID 根據UID查找string

    -gid GID 根據GID查找

    -nouser 查找沒有屬主的文件

    -nogroup 查找沒有屬組的文件

3 根據文件屬性查找

    -type [fdcblps] 查找指定類型的文件

    -size [+|-]N<k|M|G>

        +Nk 查找SIZE大於Nk的文件 >

        -NM 查找SIZE小於Mk的文件 <

        NG 查找SIZE屬於[(N-1)G, NG]的文件

4 根據時間查找

    -<m|a|c>time [+|-]N

    -<m|a|c>min [+|-]N

        0表明當天 N表明查找N~N+1天前的文件 [N, N+1]

        -N表明 查找N天前到如今的文件 <=N

        +N表明 查找N+1天前的全部文件 >=N+1

    -newer FILENAME 查找比FILENAME還要新的文件

5 根據權限查找

    -perm [/|-]MODE

        MODE 精確匹配權限查找

        /MODE ugo任意一位匹配就知足條件

        -MODE 文件權限徹底包含此權限就匹配

6 組合查找

    -a 與

    -o 或

    -not 非

7 action

    -print 顯示查找到的文件

    -ls 相似ls -l同樣顯示文件詳細信息

    -ok CMD {} \; 每一次操做都須要用戶確認的執行命令

    -exec CMD {} \; 執行命令 不詢問

 

一些例子

1 查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件並將其屬主屬組均修改成root

    find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;

2 查找/var目錄下大於1k的文件並顯示詳細信息

    find /etc -size +1k -ls

3 查找/etc目錄下全部用戶都沒有寫權限的文件

 

grep是一個精確查找文本的命令

egrep = grep -e 擴展正則

    -i 忽略大小寫

    -v 反向查找 查找不匹配的

    -AN 查找到的行與下面N行合併

    -BN 查找到的行與上面N行合併

    -CN 查找到的行與上面和下面N行合併

sed [options] [script] [file...] 文本處理流編輯器

    -n 靜默模式

    -i 修改原文件

    -f 從文件讀入script

    -e 同時執行多個操做 或者使用 ' 鍵入一系列命令

script組成: AddressCommand

Address

    $表示最後一行 +N 匹配N行

    StartLine[,Endline]  或使用正則 /RegExp/[,RegExp/] 

Command

    ! 反命令 !p 把沒有匹配到的打印出來

    y/OLD/NEW 相似tr命令的逐個替換

    s/pattern/string/[gi] 查找並替換 也可以使用其餘分隔符避免轉義字符

 

    a\string 在指定行後面追加新行string

    i\string 在指定行前面添加新行string

    r FILE 將指定的文件的內容追加到符合條件的後面

    w FILE 將匹配內容另存至指定文件中 [>重定向是屏幕內容]

    d刪除 p顯示 q退出 l顯示行尾$

 

    & 匹配到的整串  \(..\) \1, \2 分組模式 = 當前行號

    多行處理Command

        n 下一行 N 這一行和下一行合併處理

        DP和N配合多行中只處理第一行[多行刪除/打印]

    跳轉命令

        b 跳轉至:label 默認EOF

        t 只有成功才跳轉 :label

awk [options] 'PATTERN { action }' [file...] 文本報告生成器

    -f 從文件讀入script

    -F 指定輸入分割符

    -v 'VAR DECLARE'

PATTERN

    Expression[, Expression] 表達式

        Expression可用符號

        <, <=, >, >=, ==, !=

        ~ 匹配 !~ 不匹配 in 範圍

    /RegExp/ 正則

VAR

    $0 整行 $1, $2, ... 列

    FS 輸入分隔符 OFS 輸出分隔符

    RS 輸入行分隔符 ORS 輸出行分隔符

    NR 當前處理行數 多文件統計計數

    FNR 當前處理行數 單個文件計數

    NF 當前行有多少字段 $NF 最後一個字段

    FILENAME 所處理的文件名

    ARGC ARGV 命令行參數

    ENVIRON 當前shell環境變量及其值的關聯數組

ACTION

    BEGIN/END 處理以前/後 執行一次

        'BEGIN{action}'

        'END{action}'

    printf 格式化打印

    pirnt 簡單打印

    ACTION中還能使用大量C風格控制語句以及內置函數

例子

    awk -F: '{printf "%5s %i\n",$1,$3}' /etc/passwd

    linux命令中的各種正則表達式有區別 [bre/ere]等

    許多字符須要加\進行轉義

    find /etc -not -perm /222

相關文章
相關標籤/搜索