使用shell命令更改PHP标记

使用shell命令更改PHP标记,php,sed,gnu-findutils,Php,Sed,Gnu Findutils,我的问题是: 我尝试更改所有标记(您可以使用以下sed命令: find -type f -name "*.php" -exec sed -i ':a;N;$!ba;s/<?\([ \n]\|echo\)/<?php \1/g' {} \; find-typef-name“*.php”-exec sed-i:a;N;$!ba;s/您可以随时使用php执行以下操作: #!/usr/bin/php <?php foreach (glob("./*.php") as $fn) {

我的问题是:
我尝试更改所有标记(
您可以使用以下sed命令:

find -type f -name "*.php" -exec sed -i ':a;N;$!ba;s/<?\([ \n]\|echo\)/<?php \1/g' {} \;

find-typef-name“*.php”-exec sed-i:a;N;$!ba;s/您可以随时使用php执行以下操作:

#!/usr/bin/php 
<?php

foreach (glob("./*.php") as $fn) {
    $data = file_get_contents($fn);
    $data = preg_replace("/<\?php/", "<?", $data);
    $data = preg_replace("/<\?[\b\n\s]*/", "<?php ", $data);

    file_put_contents("./$fn", $data);
}
!/usr/bin/php

@André首先,我也要回答这个问题。但后来我想可能会有一些模板,以
*.php
结尾,有一些类似于
@hek2mgl的东西,这是作者的问题,我想他可能会快速查看哪些文件被修改,看看其中是否有这样的语法,但由于他没有提到这方面的任何内容,我想他可能会快速查看一下发布了。无论如何,你发布了一个更好的答案。:@André如果你添加了这个代码,如果被替换了,但是如果你已经有了一个标签
@user3680708很好的观点,完全没有想到。这很好用,但不理解它的语法,非常感谢!这是一个有点高级的sed用法。基本上,我使用两行的行缓冲区来替换
仍然有效的find类型f-name“*php。”-Exec sed-I的/find-名称“*.php”-输入f-print0 | xargs-0sed-i-e的php/Thank技巧我不喜欢做这种事情,但谢谢你的朋友!
#!/usr/bin/php 
<?php

foreach (glob("./*.php") as $fn) {
    $data = file_get_contents($fn);
    $data = preg_replace("/<\?php/", "<?", $data);
    $data = preg_replace("/<\?[\b\n\s]*/", "<?php ", $data);

    file_put_contents("./$fn", $data);
}