首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示哪些文件与正在查找集合中所有文件的grep匹配

显示哪些文件与正在查找集合中所有文件的grep匹配
EN

Stack Overflow用户
提问于 2012-03-29 12:17:18
回答 5查看 83关注 0票数 1

假设我有一个这样的文件集合:

代码语言:javascript
运行
复制
echo -e "apple\n cherry" >> f1.txt; 
echo -e "grape\n strawberry" >> f2.txt; 
echo -e "orange\n cherry" >> f3.txt; 

我要找到每个有"cherry“字样的文件。我可以这样做:

代码语言:javascript
运行
复制
ls *.txt | xargs cat | grep cherry

但这只返回f1和f3中匹配的两行,而不显示“源”文件,如下所示:

代码语言:javascript
运行
复制
cherry
cherry

我想看看这些匹配的文件-大概是这样的:

代码语言:javascript
运行
复制
f1.txt ->  cherry 
f3.txt ->  cherry

有没有一种方法可以简单地从命令行执行此操作?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-29 12:19:55

代码语言:javascript
运行
复制
jcomeau@intrepid:/tmp$ echo -e "apple\n cherry" >> f1.txt; 
jcomeau@intrepid:/tmp$ echo -e "grape\n strawberry" >> f2.txt; 
jcomeau@intrepid:/tmp$ echo -e "orange\n cherry" >> f3.txt; 
jcomeau@intrepid:/tmp$ grep cherry *txt
f1.txt: cherry
f3.txt: cherry
票数 3
EN

Stack Overflow用户

发布于 2012-03-29 12:21:15

-l选项意味着grep将只打印匹配的文件名,而不打印匹配的行,因此您的任务可以通过以下方式完成:

代码语言:javascript
运行
复制
$ grep -l cherry *.txt
f1.txt
f3.txt

(请注意,对于此任务,lsxargs是不必要的,grep将除第一个位置参数之外的所有参数都视为要查看的文件)

票数 3
EN

Stack Overflow用户

发布于 2012-03-29 12:22:29

尝试使用grep -H打印文件名和匹配项。从手册页:

代码语言:javascript
运行
复制
   -H, --with-filename
          Print  the  file  name for each match.  This is the default when
          there is more than one file to search.

我发现这在结合使用grepfind时很有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9918997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档