linux - 如何从tail输出grep并包含文件名?
问题描述
这是怎么回事:
tail -n +1 *.txt | grep foo
稍作修改以显示文件名?
当它没有通过管道传输时,文件名很方便地作为输出的一部分。是否可以将grep
操作限制在文件的内容中,同时保留文件名的输出?
解决方案
您可以使用匹配的简单正则表达式;
- 所有文件名的;
==>(.*)<==
- 您的“搜索”字符串(例如
foo
:)
tail -n +1 * | grep -E '==>(.*)<==|foo'
花药选项,基于我原来的答案-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
推荐阅读
- java - 如何在容器内循环以选择硒中的值?
- r - R - 如何通过命令提示符执行脚本时显示进度
- pandas - Pandas 数据框具有正则表达式关键字
- java - Java Generic 身份验证方法应该抛出 Exception 或 RuntimeException
- javascript - 如何重用 Papa Parse 的结果数组?
- python - Python查找对,相同的值
- javascript - 通过单击每个水平面板动态更新面包屑
- java - 使用 Struts 制作的 WebApplication 不断向数据库中插入空值
- entity-framework - 使用两列作为鉴别器
- java - 轨道控制使场景在一段时间后消失