如何替换Linux下多个文件中的未知字符串?

How to replace an unknown string in multiple files under Linux?

我想将一个文件夹中所有文件的多个不同字符串更改为一个新字符串。

当文本文件中的字符串(在同一目录中)是这样的:

我需要将它们全部指向一个 PNG,即 "url/static.png",因此所有三个文件都具有相同的 URL 内部指向相同的 PNG。

我该怎么做?

您可以为此使用命令 find 和 sed。请确保您位于要替换文件的文件夹中。

find . -name '*.*' -print|xargs sed -i "s/\"url\/1.png\"/\"url\/static.png\"/g"

建议 bash 脚本:

#!/bin/bash
# for each file with extension .json in current directory
for currFile in *.json; do
  # extract files ordinal from from current filename
  filesOrdinal=$(echo "@currFile"| grep -o "[[:digit:]]\+")
  # use files ordinal to identify string and replace it in current file
  sed -i -r 's|url/'"$filesOrdinal".png'|url/static.png|' $currFile
done