Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 如何查找包含少量特定字符串但不一定在同一行中的所有文件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在 linux中grep -r< String> <路径>是在< path>下查找文件中所有实例的常用方法,它基本上为您提供< path>下的所有文件.其中包括< String>.但是如果我想找到包含少量字符串的所有文件呢?来自grep -r< String1> <路径> | grep< String2>我可以获得包含< String1>的所有文件和< String2>在同一行,但我怎样才能获得包
linux中grep -r< String> <路径>是在< path>下查找文件中所有实例的常用方法,它基本上为您提供< path>下的所有文件.其中包括< String>.但是如果我想找到包含少量字符串的所有文件呢?来自grep -r< String1> <路径> | grep< String2>我可以获得包含< String1>的所有文件和< String2>在同一行,但我怎样才能获得包含< String1>的文件和< String2>在单独的行?

解决方法

你可以试试

grep -rl searchString1 . | xargs grep -l searchString2@H_696_26@ 
 

获取目录中的文件名列表.包含两个搜索字符串(不一定在同一行).您可以级联,以防您需要更多搜索字符串:

grep -rl searchString1 . \
  | xargs grep -l searchString2 \
  | xargs grep -l searchString3@H_696_26@ 
 

如果你在文件名中有空格和其他令人讨厌的字符,这是很棘手的,因为那时xargs被愚弄了.在这种特殊情况下(或者只是为了确保不会出现问题),您可以使用0字节终止字符串:

grep -rlZ searchString1 . \
  | xargs -0 grep -lZ searchString2 \
  | xargs -0 grep -l searchString3@H_696_26@ 
 

并检查输出你可以使用像:

grep -rlZ searchString1 . \
  | xargs -0 grep -lZ searchString2 \
  | xargs -0 grep -lZ searchString3 \
  | xargs -0 egrep 'searchString2|searchString2|searchString3' /dev/null \
  | less@H_696_26@ 
 

一种完全不同的方法是直接使用find(但这会启动大量的grep进程,因此可能效率较低):

find . -type f \( \
  -exec grep -q searchString1 {} \; -a \
  -exec grep -q searchString2 {} \; -a \
  -exec grep -q searchString2 {} \; \) -print@H_696_26@

大佬总结

以上是大佬教程为你收集整理的linux – 如何查找包含少量特定字符串但不一定在同一行中的所有文件?全部内容,希望文章能够帮你解决linux – 如何查找包含少量特定字符串但不一定在同一行中的所有文件?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。