跨多个文件查找和替换 SSH 命令?

Dan*_*Lee 3 ssh command

所以这个命令将在目录 tmp 的 file.txt 中用 XYZ 替换 abc

sed -ie 's/abc/XYZ/g' /tmp/file.txt

您如何一次性在具有 .html 扩展名的目录中的大量文件中进行这样的查找和替换?

Eug*_*eck 5

find /start/path -name *.html -exec sed -ie 's/abc/XYZ/g' '{}' \;
Run Code Online (Sandbox Code Playgroud)

根据您的要求,它的作用如下:

find /start/path -name *.html
Run Code Online (Sandbox Code Playgroud)

从 /start/path 开始查找所有 glob 到 *.html 的文件

-exec 选项告诉 find,不仅要打印文件,还要对它们运行命令。在此命令中 {} 被文件替换。-exec 选项必须以分号结尾,我们必须用反斜杠将其转义,否则 bash 会吞下它。

再次,从 OP 的特殊情况:将以下内容放入名为 replaceabc.sh 的文件中

#!/bin/bash
find '/home/129224/domains/sandpit.uk-cpi.com/html/sshit' -name '*.html' -exec sed -ie 's/abc/XYZ/g' '{}' \;
Run Code Online (Sandbox Code Playgroud)

然后从 shell 提示

chmod 700 /path/to/replaceabc.sh
/path/to/replaceabc.sh
Run Code Online (Sandbox Code Playgroud)