我正在尝试输出包含特定模式的行,该模式位于非结构化目录层次结构中特定命名的文件中。我感兴趣的每个文件都名为“foo.xml”。我感兴趣的模式如下所示:(<digit><digit>T<digit><digit>
作为 PERL 正则表达式\d\dT\d\d
:)。我想输出与此模式匹配的整行(甚至该行中与模式不匹配的额外内容)。
我所在的位置:
find . | grep foo.xml
在“根”中执行会给我一个我想要扫描的文件列表。
下一步我该做什么?
我更愿意在命令行上执行此操作。我可以轻松编写 PERL 脚本,但可能有一种非常直接的方法来执行此操作。
答案1
您可以尝试以下方法:
find . -name foo.xml -exec grep REGEX '{}' \;
编辑 在你的情况下,REGEX 是
'[0-9][0-9]T[0-9][0-9]'
答案2
或者,既然您提到了 PERL,您可以使用 grep 的 -perl-regexp 选项:
find . -name foo.xml -exec grep -P '\d\dT\d\d' '{}' \;
如果您习惯使用 perl 正则表达式,那么这是一个很棒的功能。