【问题标题】:find and replace text in multiple files [duplicate]在多个文件中查找和替换文本[重复]
【发布时间】:2012-08-29 23:19:36
【问题描述】:
【问题讨论】:
标签:
regex
bash
sed
replace
【解决方案1】:
试试这个(在备份文件夹后,因为这里 sed 就地工作)。
find /var/www/websitename/ -name '*.html' -exec sed -i.bak 's/.title.Old title..title./<title>New title<\/title>/g' {} \;
【解决方案2】:
perl -pi -e 's/\<title\>Old title\<\/title\>/\<title\>New title\<\/title\>/g' *.html
【解决方案3】:
您也可以使用记事本++。打开所有文件(只需标记它们并在记事本++上拖动或拖动整个文件夹),按 ctrl+f,切换到第二个选项卡(“替换”或类似的东西 - 我没有使用英文版),输入你的文本(你也可以使用正则表达式 - 查看选项)并单击“替换所有打开的文件”(或类似的东西)。它不像使用脚本那样强大的解决方案,但它更容易而且通常就足够了。
【解决方案4】:
试试这个:
#!/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