代码之家  ›  专栏  ›  技术社区  ›  Irina

如何在bash文件中递归添加一行?

  •  0
  • Irina  · 技术社区  · 7 年前

    我使用该命令在当前目录及其子目录中的php文件的开头递归地添加一行。

        find . -name "*.php" -exec sed -i -e "/<?php/a\\
    Sometext" *.php \;
    

    但它补充道 Sometext 很多次(而不是一次)只在当前目录的php文件中(而不是全部)。我做错了什么?

    1 回复  |  直到 7 年前
        1
  •  6
  •   Socowi    7 年前

    你不能传递你找到的文件 find sed 命令,但shell glob找到的文件 *.php . 之前 找到 *.php文件

    find . -name '*.php' -exec sed ... 1stMatch.php 2ndMatch.php ... \;
    

    之后 找到

    sed ... 1stMatch.php 2ndMatch.php ...

    你可能想写信

    find . -name '*.php' -exec sed -i -e '/<?php/a\\
    Sometext' {} \;
    

    对于每个文件, 执行 并替换 {} 一个文件名。 {} + 而不是 {} \; 以至于 塞德

    推荐文章