我使用该命令在当前目录及其子目录中的php文件的开头递归地添加一行。
find . -name "*.php" -exec sed -i -e "/<?php/a\\ Sometext" *.php \;
但它补充道 Sometext 很多次(而不是一次)只在当前目录的php文件中(而不是全部)。我做错了什么?
Sometext
你不能传递你找到的文件 find 到 sed 命令,但shell glob找到的文件 *.php . 之前 找到 *.php文件
find
sed
*.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' {} \;
对于每个文件, 执行 并替换 {} 一个文件名。 {} + 而不是 {} \; 以至于 塞德
{}
{} +
{} \;
塞德