可能重复:
Find and Replace Inside a Text File from a Bash Command
我被告知要更改网站中的所有标题标签。
因为标题标签位于网站的所有页面(超过30个)并且它是静态的,所以我需要逐个文件地将文件替换为新标题。
所以我想知道是否有人知道一个可以实现这一目标的脚本而无需一个一个地手动完成。
示例:
/var/www/websitename/
在此路径中,有多个.html文件,我必须更改标题:
<title>Old title</title>
要:
<title>New title</title>
答案 0 :(得分:3)
试试这个(在备份文件夹之后,因为这里sed
就位)。
find /var/www/websitename/ -name '*.html' -exec sed -i.bak 's/.title.Old title..title./<title>New title<\/title>/g' {} \;
答案 1 :(得分:2)
perl -pi -e 's/\<title\>Old title\<\/title\>/\<title\>New title\<\/title\>/g' *.html
答案 2 :(得分:0)
您也可以使用记事本++。打开所有文件(只需标记它们并拖动记事本++或拖动整个文件夹),按ctrl + f,切换到第二个标签(“替换”或类似的东西 - 我不使用英文版),输入你的文字(你也可以使用regexp - 请参阅选项)并单击“替换所有打开的文件”(或者像这样)。它不像使用脚本那样功能强大,但它更容易,通常也足够了。
答案 3 :(得分: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