zoukankan      html  css  js  c++  java
  • find和grep的使用

    1、find命令的使用

    在Linux中可以使用find命令在指定的目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,当使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并将查找到的文件进行全部显示。

    (1)命令语法

    find命令的语法如下:

    find path -option [-print] [-exec -ok command] {} ;

    find根据下面规则判断path和exprssion,在命令列上的第一个-(),之前的部分为path,之后的是expression,如果path为空字符串,则使用当前路径,如果expression是空字符串,则使用-print为预设的expression。

    (2)常用选项说明

    -mount,-xdev:只检查和指定目录在同一文件系统下的文件,避免列出其它文件系统的文件

    -amin n:在过去n分钟内被读取过的文件

    -anewer file:比文件file更晚被读取过的文件

    -atime n:在过去n天内被读取过的文件

    -cmin n:在过去n分钟内被修改过的文件

    -empty:空的文件

    -gid n or -group name:gid是n或group是name的文件

    -ipath p,-path p:路径名称符合p的文件,ipath会忽略大小写

    -name name,-iname name:文件名称符合name的文件,iname会忽略大小写

    -size n:文件大小是n单位的文件

    -type c:文件类型是c的文件

    -pid n:process id是n的文件

    (3)实例

    将目前目录及其子目录下所有以.c结尾的文件列出来:

    $ find . -name “*.c”

    将目前目录及其子目录中的所有一般文件列出:

    $ find . -type f

    将当前目录及其子目录下所有最近20天内更新过的文件列出:

    $ find . -ctime -20

    查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

    $ find /var/log -type f -mtime +7 ok rm {} ;

    查找当前目录中文件属主具有读写权限,并且文件所属组合其他用户具有读权限的文件:

    $ find . -type f -perm 644 -exec ls -l {} ;

    查找系统中所有文件长度为0的为普通文件,并列出它们的完整路径:

    $ find / -type f –size 0 –exec ls –l {} ;

    2、grep命令的使用

    Linux中grep命令用于查找文件中符合条件的字符串,grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合指定的范本样式,预设grep指令将会把含有范本样式的哪一列显示出来,若不指定任何文件名称,或是所给与的文件名”-”,则grep将会从标准输入设备读取数据。

    (1)命令语法

    grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

    (2)常用选项说明

    -a:不要忽略二进制数据。

    -A<显示列数>:除了显示符合范本样式的那一行之外,并显示该行之后的内容。

    -b:在显示符合范本样式的那一行之外,并显示该行之前的内容。

    -c:计算符合范本样式的列数。

    -C<显示列数>或-<显示列数>:除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

    -d<进行动作>:当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。

    -e<范本样式>:指定字符串作为查找文件内容的范本样式。

    -E :将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。

    -f<范本文件>:指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。

    -F:将范本样式视为固定字符串的列表。

    -G:将范本样式视为普通的表示法来使用。

    -h:在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

    -H:在显示符合范本样式的那一列之前,标示该列的文件名称。

    -i:忽略字符大小写的差别。

    -l:列出文件内容符合指定的范本样式的文件名称。

    -L:列出文件内容不符合指定的范本样式的文件名称。

    -n:在显示符合范本样式的那一列之前,标示出该列的编号。

    -q:不显示任何信息。

    -R/-r:此参数的效果和指定“-d recurse”参数相同。

    -s:不显示错误信息。

    -v:反转查找。

    -w:只显示全字符合的列。

    -x:只显示全列符合的列。

    -y:此参数效果跟“-i”相同。

    -o:只输出文件中匹配到的部分。

    (3)实例

    在文件中搜索一个单词,命令返回一个包含”match_pattern”的文本行:

    $ grep match_pattern file_name
    or
    $ grep “match_pattern” file_name

    在多个文件中查找:

    $ grep “match_pattern” file1 file2 file3 …

    输出除之外的所有行:

    $ grep -v “match_pattern” file_name

    标记匹配颜色:

    $ grep “match_pattern” file_name –color=auto

    使用正则表达式:

    $ grep -E “[1-9]+”

    只输出文件中匹配到的部分:

    $ echo this is a test line. | grep -o -E “[a-z]+.”

    统计文本或者文本中包含匹配字符串的行数:

    $ grep -c “text” file_name

    输出包含匹配字符串的行数:

    $ grep “text” -n file_name

    搜索多个文件并查找匹配文件在哪些文件中:

    $ grep –l “text” file1 file2 file3 …

    在多级目录中对文本进行递归搜索:

    $ grep “text” . -r -n

    参考:

    https://man.linuxde.net/find

    https://man.linuxde.net/grep

    https://www.runoob.com/linux/linux-comm-find.html

    https://www.runoob.com/linux/linux-comm-grep.html

  • 相关阅读:
    [转载][mysql]mysql字符集干货
    [mysql]修改表段默认值
    微信支付之h5方式(非微信内置浏览器中支付)
    阿里云 ECS 安全组
    Memcached cas 陷阱
    Memcached 分布式集群
    nginx 配置多个主机
    static类型的变量
    全局变量和局部变量
    nginx 负载均衡(默认算法)
  • 原文地址:https://www.cnblogs.com/Cqlismy/p/11358361.html
Copyright © 2011-2022 走看看