首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux和grep命令一起使用

问Linux和grep命令一起使用
EN

Stack Overflow用户
提问于 2014-02-13 19:37:38
回答 4查看 186.6K关注 0票数 85

我试图找到一个命令或创建一个Linux脚本,它可以执行这两个组件并列出otuput

代码语言:javascript
复制
find . -name '*bills*' -print

这个打印了所有的文件

代码语言:javascript
复制
./may/batch_bills_123.log
./april/batch_bills_456.log
..

根据这个结果,我想对一个单词执行grep,我现在手动执行这个操作。

代码语言:javascript
复制
grep 'put' ./may/batch_bill_123.log 

并获取

代码语言:javascript
复制
sftp > put oldnet_1234.lst

我希望得到文件名和它的匹配。

代码语言:javascript
复制
./may/batch_bills_123.log   sftp > put oldnet_1234.lst
..
..
and so on... 

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-13 21:12:44

您正在grep中寻找-H选项。

代码语言:javascript
复制
find . -name '*bills*' -exec grep -H "put" {} \;

这是解释

代码语言:javascript
复制
    -H, --with-filename
      Print the filename for each match.
票数 122
EN

Stack Overflow用户

发布于 2014-02-13 21:18:33

既然问题更清楚了,您可以在一个grep中完成这个任务。

代码语言:javascript
复制
grep -R --include "*bills*" "put" .

带相关旗帜

代码语言:javascript
复制
   -R, -r, --recursive
          Read  all  files  under  each  directory,  recursively;  this is
          equivalent to the -d recurse option.
   --include=GLOB
          Search only files whose base name matches GLOB  (using  wildcard
          matching as described under --exclude).
票数 57
EN

Stack Overflow用户

发布于 2020-05-08 20:14:42

或者甚至更容易

代码语言:javascript
复制
grep -R put **/*bills*

** glob语法意味着“目录的任何深度”。它将在Zsh工作,我认为最近版本的Bash也是如此。

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

https://stackoverflow.com/questions/21763904

复制
相关文章

相似问题

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