【问题标题】:Change first line recursively in all php files using bash使用 bash 在所有 php 文件中递归更改第一行
【发布时间】:2014-03-21 04:50:19
【问题描述】:

我有一个 WordPress 网站,想使用 bash 递归地更改所有 php 文件的第一行。我应该怎么做?我对 bash 不是很熟悉。

谢谢!

【问题讨论】:

标签: php bash


【解决方案1】:

我使用了上述两个答案并执行了以下操作:

find . -name "*.php" -exec sed -i '1 s/.*/<?php/' '{}' \;

非常感谢 Theox 和 anishsane 的帮助

【讨论】:

    【解决方案2】:

    将第一行更改为其他行:

    sed -i '1s/.*/changed line/' *.php
    

    在第一行之前添加一行:

    sed -i '1s/^/changed line\n/' *.php
    

    【讨论】:

    • 虽然它有效,但它还修改了我文件中的所有行尾。在 vim 中,我在末尾看到 ^M。
    【解决方案3】:

    为了修改文件的第一行,你可以这样:

    awk 'NR==1 {$0="what you want"} 1' *.php
    

    您可以在这里找到更多信息:bash: replace an entire line in a text file

    然后递归执行,您可以先使用find,然后对找到的每个文件执行 awk 命令。

    find . -name "*.php" -exec awk 'NR==1 {$0="what you want"} 1'
    

    更多关于find命令的信息在这里:https://www.gnu.org/software/findutils/manual/html_mono/find.html#Scope

    【讨论】:

    • 这里有一个小问题。 awk 将 o/p 写入标准输出,而不是写回文件。
    • 我使用了这两个响应并执行了以下操作: find 。 -name "*.php" -exec sed -i '1 s/.*/
    猜你喜欢
    • 2015-09-23
    • 2011-05-31
    • 2018-12-03
    • 1970-01-01
    • 2017-10-23
    • 2020-05-01
    • 1970-01-01
    • 2022-07-16
    • 2011-12-24
    相关资源
    最近更新 更多