您现在的位置是:首页 > 文章详情

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

日期:2017-10-15点击:563
查找目录下的所有文件中是否含有某个字符串 
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!'
 
 
 
 
 
 

原文链接:https://www.centoschina.cn/command/help/9059.html
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章