所以这个命令将在目录 tmp 的 file.txt 中用 XYZ 替换 abc
sed -ie 's/abc/XYZ/g' /tmp/file.txt
您如何一次性在具有 .html 扩展名的目录中的大量文件中进行这样的查找和替换?
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)