• linux查找所有文件中某个字符串


    查找目录下的所有文件中是否含有某个字符串 
    find .|xargs grep -ri "IBM" 
    查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 

    find .|xargs grep -ri "IBM" -l 

    (1)find命令的一般形式 
          find pathname -options [-print -exec -ok] 
          pathname :find命令所查找的目录路径。如用"."来表示当前的目录,用/来表示系统根目录 
          -print :find命令将匹配的文件输出到标准输出 
          -exec: find命令对匹配的文件执行该参数所给出的shell命令,相应的命令形式为 
            'command'{} ; (注意{}和之间的空格) 
          -ok 和 -exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 
        options有如下几种: 
        -name :按照文件名查找文件 
        -perm :按照文件权限来查找文件 
        -user :按照文件属主来查找文件 
        -group :按照文件所属的组来查找文件 
        -mtime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。find命令还有-atime 和-ctime选项,但它们都和-mtime选项相似。 
        -size n[c]查找文件长度为n块的文件,带有c时表示文件长度以字节计。 
        -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在 
        -newer file1 !file2查找更改时间比文件file1新但比文件file2旧的文件 
        -depth 先查找指定目录有无匹配文件,若无则再在子目录中查找 
        -type 查找某一类型的文件,如 
          b :块设备文件 
          d:目录 
          e:字符设备文件 
          p;管道文件 
          l:符号链接文件 
          f:普通文件 
      (3)find命令举例 
          find -name "*.txt" -print 查找txt结尾的文件并输出到屏幕上 
          find /cmd ".sh" -print 查找/cmd目录下所有sh文件,并输出 
          find . -perm 755 -print 查找当前目录下权限为755的文件,并输出 
          find `pwd` -user root -print 查找当前目录下属主为root的文件,并输出 
          find ./ -group sunwill -print 查找当前目录下所属主是sunwill的文件 
          find /var -mtime -5 -print 查找/var目录下更改时间为5天内的所有文件 
          find /var -mtime +5 -print 查找/var目录下更改时间为5天以前的所有文件 
          find /var -newer "myfile1" ! -newer "myfile2" -print 查找/var目录下比myfile1新,但是比myfile2旧的所有文件。 
          find /var -type d -print 查找/var目录下所有目录 
          find /var -type l -print 查找/var目录下所有的符号链接文件。 
          find . -size +1000000c -print 查找当前目录下大于1000000字节的文件 
          find / -name "con.file" -depth -print 查找根目录下有无"con.file",若无则在其子目录中查找 
          find . -type f -exec ls -l {} ; 查找当前目录下是否有普通文件,若有则执行ls -l

    (4)xargs命令 
          在 使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec。不幸的是,有些系统对能够传递给exec的命 令长度有限制,这样find命令运行几分钟之后就算出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs的用处所在,特别是与 find命令一起使用,exec会发起多个进程,而xargs会多个,只有一个 
          find ./ -perm -7 -print | xargs chmod o-w 查找权限为7的文件并传递给chmod处理

    (5)grep介绍.如果你想在当前目录下 查找"hello,world!"字符串,可以这样:  

    grep -rn "hello,world!" *

    * : 表示当前目录所有文件,也可以是某个文件名

    -r 是递归查找

    -n 是显示行号

    -R 查找所有文件包含子目录

    -i 忽略大小写

    下面是一些有意思的命令行参数:

    grep -i pattern files :不区分大小写地搜索。默认情况区分大小写, 

    grep -l pattern files :只列出匹配的文件名, 

    grep -L pattern files :列出不匹配的文件名, 

    grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’), 

    grep -C number pattern files :匹配的上下文分别显示[number]行, 

    grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行, 

    grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。 

    这里还有些用于搜索的特殊符号:

    < 和 > 分别标注单词的开始与结尾。

    例如: 

    grep man * 会匹配 ‘Batman’、‘manic’、‘man’等, 

    grep '<man' * 匹配‘manic’和‘man’,但不是‘Batman’, 

    grep '<man>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。 

    '^':指匹配的字符串在行首, 

    '$':指匹配的字符串在行尾,

    (6),xargs配合grep查找

    find -type f -name '*.php'|xargs grep 'hello,world!'

  • 相关阅读:
    查看docker程序使用的内存脚本
    shell分割字符串并赋值给变量
    【Ceph】Ceph学习理解Ceph的三种存储接口:块设备、文件系统、对象存储
    删除软连接导致源文件一起被删除
    nginx+keepalived实现双活
    maven私有仓库的搭建
    直接访问nginx ip地址返回404错误
    Solaris基础系列之四:图解Oracle 10g安装
    数据库进阶系列之一:漫谈数据库索引
    Tips&Tricks系列四:C#面试笔试小贴士
  • 原文地址:https://www.cnblogs.com/ExMan/p/9119140.html
Copyright © 2020-2023  润新知