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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

find [path...] [options] [action] 默认选项为 在当前目录查找所有文件并显示

    -L 跟随符号链接查找文件

1 根据文件名查找

    -name FILENAME 支持glob

    -iname FILENAME 不区分大小写 支持glob

    -regex PATTERN 正则表达式文件名匹配

2 根据用户查找

    -user USERNAME 根据属主查找

    -group GROUPNAME 根据属组查找

    -uid UID 根据UID查找

    -gid GID 根据GID查找

    -nouser 查找没有属主的文件

    -nogroup 查找没有属组的文件

3 根据文件属性查找

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

    -size [+|-]N

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

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

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

4 根据时间查找

    -time [+|-]N

    -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

 

转载于:https://my.oschina.net/nichijou/blog/745228

你可能感兴趣的:(Linux基础 find/grep/sed/awk 四大命令)