我的所有PHP文件目前都已启动
<?php
declare(strict_types=1);
这是一件小事,但我想将它们全部改为
<?php declare(strict_types=1);
我认为我需要使用tr,因为sed一次只能在一行上运行。但我无法通过.php文件目录以递归方式执行此操作。
谢谢!
答案 0 :(得分:2)
您可以尝试使用GNU sed:
find . -name *.php -exec sed -i '1{N;s/<?php\s*\n\s*declare/<?php declare/}' {} \;
find
位检索当前目录中的所有.php文件,sed
位就地编辑它们以将匹配的两行定义更改为单行定义。
它假设php开始标记位于第一行,并查找以declare(和可选空格)开头的第二行。
如果您不使用GNU sed,则此命令应符合posix:
find . -name *.php -exec sed -i.bak '1{N;s/<?php[[:space:]]*\
输入 [[:space:]]*declare/<?php declare/}' {} \;
然而,它还会创建.php文件的备份,一旦确定命令成功并使用其他查找,就可以删除它:
find . -name *.php.bak -delete