1

可能的重复:
在 Bash 命令的文本文件中查找和替换

我被告知要更改网站中的所有标题标签。

因为标题标签在网站的所有页面中(超过 30 个)并且它是静态的,所以我需要逐个文件地用新的标题替换这个标题。

所以我想知道是否有人知道一个脚本可以实现这一点,而不必一个一个地手动完成。

例子:

/var/www/websitename/

在此路径中,有多个 .html 文件,我必须更改标题:

 <title>Old title</title>

到:

 <title>New title</title>
4

4 回答 4

3

试试这个(在备份文件夹后,因为这里sed就地工作)。

find /var/www/websitename/ -name '*.html' -exec sed -i.bak 's/.title.Old title..title./<title>New title<\/title>/g' {} \;
于 2012-09-05T09:16:37.933 回答
2
perl -pi -e 's/\<title\>Old title\<\/title\>/\<title\>New title\<\/title\>/g' *.html
于 2012-09-05T09:14:50.247 回答
0

您也可以使用记事本++。打开所有文件(只需标记它们并在记事本++上拖动或拖动整个文件夹),按 ctrl+f,切换到第二个选项卡(“替换”或类似的东西 - 我没有使用英文版),输入你的文本(你也可以使用正则表达式 - 查看选项)并单击“替换所有打开的文件”(或类似的东西)。它不像使用脚本那样强大的解决方案,但它更容易而且通常就足够了。

于 2012-09-05T11:36:59.633 回答
0

试试这个:

#!/bin/bash

old_title="<title>Old title<\/title>"
new_title="<title>New title<\/title>"

for file in $(find . -name "*.html");
do
    `sed -i "s/${old_title}/${new_title}/g" ${file}`
done
于 2012-09-05T12:34:45.347 回答