我试图在目录中找到不包含命名空间的PHP文件列表。这可以通过查找打开PHP标记的文件在代码库中派生,然后立即声明一个类,如下所示:
<?php
class Whatevs
{
...
到目前为止,我已经得到了这个:
grep -Pnr -- "/\<\?php\s+class/m" lib
这并没有给我任何结果。什么命令会找到我想要的结果?
答案 0 :(得分:0)
grep
会分别扫描每一行,所以不幸的是,\s
不允许它将多行匹配在一起。我建议只搜索不包含名称空间声明的PHP文件。
grep -vl "^namespace " $(grep -lr "<\?php")
答案 1 :(得分:0)
感谢评论中的Wiktor。
grep -Plzr '<\?php\s+class' lib
完成了这项工作。国旗z
有所不同;它告诉grep读取数据,直到找到空字节而不是换行符,这样就可以搜索整个文件的匹配而不是一行。