Linux

xargs sed 正在重命名文件而不是替換內容

  • November 7, 2020

複雜命令:

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

在過去,它以正確的方式工作和替換。

所以文件version-info.html

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

現在它創建了第二個文件。

  • 版本資訊.html
  • 版本資訊.htmle

為什麼最後e加一個?

當我刪除時-ie,它會顯示內容。當我只刪除efrom-ie時,會出現錯誤。

提前感謝您的想法!

提供-ietosed意味著就地進行更改,同時保留名為 filename+ 的備份文件e

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 ...

不創建任何備份文件。

引用自:https://unix.stackexchange.com/questions/618510