查找没有命名空间的PHP文件列表

时间:2017-07-27 10:54:49

标签: bash grep

我试图在目录中找到不包含命名空间的PHP文件列表。这可以通过查找打开PHP标记的文件在代码库中派生,然后立即声明一个类,如下所示:

<?php

class Whatevs
{
    ...

到目前为止,我已经得到了这个:

grep -Pnr -- "/\<\?php\s+class/m" lib

这并没有给我任何结果。什么命令会找到我想要的结果?

2 个答案:

答案 0 :(得分:0)

grep会分别扫描每一行,所以不幸的是,\s不允许它将多行匹配在一起。我建议只搜索不包含名称空间声明的PHP文件。

grep -vl "^namespace " $(grep -lr "<\?php")

答案 1 :(得分:0)

感谢评论中的Wiktor。

grep -Plzr '<\?php\s+class' lib

完成了这项工作。国旗z有所不同;它告诉grep读取数据,直到找到空字节而不是换行符,这样就可以搜索整个文件的匹配而不是一行。