小编Ber*_*ert的帖子

使用 sed 在多个文件中查找并替换字符串

我正在尝试将包含一组已知字符的文件列表传递给 sed 进行查找和替换。

对于包含多个 .xml 文件的目录:

ls -la

file1.xml
file2.xml
file3.xml
Run Code Online (Sandbox Code Playgroud)

每个都包含一个匹配的字符串:

grep -i foo *

file1.xml <foo/>
file2.xml <foo/>
file3.xml <foo/>
Run Code Online (Sandbox Code Playgroud)

使用 for 循环将 foo 替换为 bar:

for f in *.xml; do ls | sed -i "s|foo|bar|g" ; done
Run Code Online (Sandbox Code Playgroud)

返回:

sed: no input files
sed: no input files
sed: no input files
Run Code Online (Sandbox Code Playgroud)

我已经找到了一个可行的替代方案,所以这主要是为了我自己的启发。

find /dir/ -name '*.xml' -exec sed -i "s|foo|bar|g" {} \;
Run Code Online (Sandbox Code Playgroud)

grep sed find for

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

find ×1

for ×1

grep ×1

sed ×1