我有很多文件包含大小写混合的 URL,我需要将其转换为小写,只更改文件内的链接,其余内容保持不变。我发现这可以通过在 Notepad++ 中使用正则表达式来实现:
在文件中查找
搜索:(href=['"])(.+)(['"])
替换为:\1\L\2\3
但是,我需要使用 bash 或 vim 来执行此操作。我该怎么做?此外,如何将其应用于各个文件夹中的多个文件?
答案1
在 Bash 中:
sed -i 's/<a href.*\">/\L&/' file.txt
在 VIM 中:
:%s/<a href.*\">/\L&/
我不确定您是只想更改 FQDN,还是更改整个 URL,或者每个锚点都单独占一行,这些应该可以满足任何情况。这只会更改锚点 URL,而不会更改锚文本(我假设这就是您要问的)
编辑:
如果要将其应用于不同文件夹中的多个文件,cd
请转到包含要编辑的所有文件和子文件夹的基本目录,然后运行以下命令:
find . -type f -name "*.html" | while read line; do sed -i 's/<a href.*\">/\L&/' $line; done
这将查找您当前目录(您应该cd
进入的目录)和以 .html 结尾的子目录中的任何文件,并执行前面提到的 sed 命令。(根据需要调整文件扩展名)。