xargs sed 正在重命名文件而不是替换内容

xargs sed 正在重命名文件而不是替换内容

复杂命令:

git ls-files | grep -E '\.(ts|xml|json|html|js|scss)$' | xargs sed -ie s/##tag##/1.0.0/g

在过去,它以正确的方式工作和替换。

所以文件版本信息.html:

<p>Version: ##tag##</p>

现在它创建了第二个文件。

  • 版本信息.html
  • 版本信息.htmle

为什么e最后加了一个?

当我删除时-ie,它会显示内容。当我只删除efrom-ie时,就会出现错误。

预先感谢您的想法!

答案1

提供, 意味着就地进行更改,同时保留名为 filename+ 的备份-ie文件。sede

man sed

   -i[SUFFIX], --in-place[=SUFFIX]

          edit files in place (makes backup if SUFFIX supplied)

如果您想同时使用任何其他参数,则sed -i必须分开使用它们,或者至少不要将该参数放在后面,-i以免被解释为备份文件的后缀。

sed -i.bak -e ...

为了创建一个以.bak扩展名作为后缀的备份文件,或者

sed -i -e ...

因为不创建任何备份文件。

相关内容