0

只是一个简单的问题。我怎样才能(递归地)找到所有包含<?(而不是<?php)的文件?

谢谢!凯文


你想要的正则表达式是<\?(?!php)

4

3 回答 3

3

使用该--perl-regexp标志,以便您可以使用更强大的 perl 兼容正则表达式和负前瞻:

grep -Prl '<\?(?!php)' .
于 2012-09-22T07:15:22.183 回答
0

 grep -r \<\? SomeDir

将捕获所有出现的<?(并且您可以使用fgrep

然后,您要删除所有出现的 php.ini 文件。你可能会使用

grep -r \<\? SomeDir | grep -v php

这应该给你一个足够好的近似值(但有点错误,因为它会跳过包含 <?php不是一起的行)。您可以将第二个替换为grepaawk或 acut以打印文件名。

你也可以使用

grep -rl `<\?[^p][^h]` 
于 2012-09-22T07:18:20.460 回答
0

你想要的正则表达式是<\?(?!php)

于 2012-09-22T07:14:12.397 回答