我有多个 html 文件中的 URL 错误,需要查找并替换。
目前我的页面显示:
src="//https:
我需要查找并替换所有:
src="https:
有人知道在 Linux 上执行此操作的方法吗?
答案1
搜索replace multiple files [linux]
找到了几个答案,但我不太在意。过多地使用了cat
,ls
来获取文件名列表等。所以我会发布一个更清晰的答案。
如果它们都在同一个目录中,我会使用如下小脚本:
#!/bin/bash
mkdir newdir
for i in *.html
do
sed 's!src="//https:!src="https:!g' < "$i" > "newdir/$i"
done
现在,更正后的文件将全部位于 中newdir
。请注意,非 html 文件不会被复制过来,因此请小心。使用diff -r
来比较并检查结果。
如果您的目录结构更复杂,最简单的方法是在每个目录中运行脚本。如果您只有几个目录,只需手动执行即可。如果您有很多目录,则需要使用另一个脚本来遍历树并调用此脚本。我不会在这里讨论这个;如果您需要它,请发布另一个问题。
编辑:您也可以-i
像 Jakuje 的回答中那样使用就地替换。我自己更喜欢更谨慎的方法。
答案2
这个 sed 命令应该可以做到这一点:
sed -i -e 's/src="\/\/https:/src="https:/g' your_file
简单测试:
$ echo 'some text src="//https: some more text' | \
sed -e 's/src="\/\/https:/src="https:/g'
some text src="https: some more text