如何解决如何从尾部grep输出并包含文件名?
this 怎么样:
tail -n +1 *.txt | grep foo
当它没有通过管道传输时,文件名很方便地成为输出的一部分。 grep
操作可以限制在文件的内容上,同时保留输出文件名吗?
解决方法
你可以使用一个简单匹配的正则表达式;
- 所有文件名;
==>(.*)<==
- 您的“搜索”字符串(例如:
foo
)
tail -n +1 * | grep -E '==>(.*)<==|foo'
花药选项,基于 my original answer,通过 -exec
运行 grep
,如下所示:
find . -type f -print -exec grep 'foo' {} \;
在 3 个文件 ({a,b,c}.txt
) 中使用两种方法的示例,所有文件都包含 a
、b
和 c
。
bash-3.2$ tail -n +1 *
==> a.txt <==
a
b
c
==> b.txt <==
a
b
c
==> c.txt <==
a
b
c
bash-3.2$ tail -n +1 * | grep -E '==>(.*)<==|c'
==> a.txt <==
c
==> b.txt <==
c
==> c.txt <==
c
bash-3.2$ find . -type f -print -exec grep 'c' {} \;
./c.txt
c
./b.txt
c
./a.txt
c
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。