脚本批量修改文件中链接的格式

声明

着急的朋友可以直接看下面的编写脚本目录项

背景

最近https://raw.githubusercontent.com/被墙了,然后众所周知我们就无法访问上面的内容了,所以我自己用github当图床,然后我的博客现在的图片全都无法正常加载了

所以我需要更改到国内的链接仓库或者自己自己服务器搭建的仓库,那么我就要修改我现在整整131篇博文的图片链接,我想我会烦死的,所以我就想到了自己之前学的shell脚本,自动化批量修改文件链接的格式

背景二

我今天浏览我的blog的时候突然发现一些照片无法正常访问,然后突然想到自己之前从gitee搬迁到github的原因,就是因为gitee有1M大小的显示,一旦图片大于1M就无法正常展示

所以2020年3月4日17:20 又一次批处理我的文件链接,并且在此之前花了整整一个下午去搭建我的私有服务器图床

背景三

发现了cdn.jsdelivr无缝衔接github仓库,而且带宽无限,然后就用上了,毕竟自己的服务器带宽只有1M

单文件测试

非插入测试

1
sed -e "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" ARSTB打卡第44周-44-521.md

解读

  • -e是表示用后面的脚本执行
  • s/./../表示用.替换..,然后最后加一个g表示全局替换
  • 其中对于链接中用到的每一个/都要在前面添加\来转义
  • 最后的是要执行脚本的文件名
  • 当然这个脚本是sed执行流处理,所以不会修改文件内容,只是把修改结果打印到stdout,这里的stdout就是我们的命令行终端
  • 我们要修改文件的话,就要把-e改成-i

结果截取片段

1
2
3
4
5
# 修改前
(https://raw.githubusercontent.com/wolfdan666/BlogPic/master/books/%E4%B8%80%E7%A6%85_%E4%BD%A0%E6%80%BB%E8%AF%B4%E6%B2%A1%E4%BA%8B.jpg)

# 运行上面的脚本之后
(https://gitee.com/wolfdan/BlogPic/raw/master/books/%E4%B8%80%E7%A6%85_%E4%BD%A0%E6%80%BB%E8%AF%B4%E6%B2%A1%E4%BA%8B.jpg)

插入测试(总感觉哪里怪怪的)

1
sed -i "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" ARSTB打卡 第44周-44-521.md

解读

这里就是上面的脚本把-e改成-i

结果展示

sed修改文件,git查看差异

文件批处理

操作前请备份,或者有git仓库,可以回滚

测试find

1
for n in `find . -name "*.md"`;do echo $n;done

编写脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
wolfdan@wolfdan-PC $ vim chlink.sh
wolfdan@wolfdan-PC $ cat chlink.sh
#!bin/bash

echo "请开始你的表演---脚本出自:www.wolfdan.cn , 作者: 单林敏"
sum=0

for n in `find . -name "*.md"`
do
((sum++))
sed -i "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" $n
done

echo "操作了{$sum}个文件"
echo "请仔细核查,建议使用VScode的git工具查看更改差异更香"
wolfdan@wolfdan-PC $ bash chlink.sh
请开始你的表演---脚本出自:www.wolfdan.cn , 作者: 单林敏
操作了{143}个文件
请仔细核查,建议使用VScode的git工具查看更改差异更香

背景二的代码编写

发现windows使用git的bash处理速度比linux下面的原生bash处理速度相差甚远!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
单林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ ls
_drafts _posts about ads.txt alipay.jpg categories chlink.sh CNAME links tags 捐赠 下雪了

单林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ vim chlink.sh

单林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ cat chlink.sh
#!bin/bash

echo "请开始你的表演---脚本出自:www.wolfdan.cn , 作者: 单林敏"
sum=0

for n in `find . -name "*.md"`
do
((sum++))
#sed -i "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" $n
sed -i "s/https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master/https:\/\/www.wolfdan.cn\/img/g" $n
done

echo "操作了{$sum}个文件"
echo "请仔细核查,建议使用VScode的git工具查看更改差异更香"

单林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ bash chlink.sh
请开始你的表演---脚本出自:www.wolfdan.cn , 作者: 单林敏
操作了{146}个文件
请仔细核查,建议使用VScode的git工具查看更改差异更香

真香

背景三代码编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
单林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ vim chlink.sh

单林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ cat chlink.sh
#!bin/bash

echo "请开始你的表演---脚本出自:www.wolfdan.cn , 作者: 单林敏"
sum=0

for n in `find . -name "*.md"`
do
((sum++))
#sed -i "s/https:\/\/raw.githubusercontent.com\/wolfdan666\/BlogPic\/master\//https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master\//g" $n
#sed -i "s/https:\/\/gitee.com\/wolfdan\/BlogPic\/raw\/master/https:\/\/www.wolfdan.cn\/img/g" $n
sed -i "s/https:\/\/www.wolfdan.cn\/img/https:\/\/cdn.jsdelivr.net\/gh\/wolfdan666\/BlogPic/g" $n
done
echo "操作了{$sum}个文件"
echo "请仔细核查,建议使用VScode的git工具查看更改差异更香"

单林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$ bash chlink.sh
请开始你的表演---脚本出自:www.wolfdan.cn , 作者: 单林敏
操作了{149}个文件
请仔细核查,建议使用VScode的git工具查看更改差异更香

单林敏@DESKTOP-A7T3V67 MINGW64 /f/hexo/blog/source (master)
$

检查

VScode初步检查

用vscode的git查看十分方便,还可以随时撤销更改

hexo s检查

hexo clean && hexo g && hexo s检查

Have fun with shell

shell真的好爽,自动化脚本,减去人工频繁操作

我因为背景二更新文章小插曲

因为hexo没有文章分类,我100多篇博文,所以很难找,然后用shell查找非常愉悦

由于CSDN写技术博文越来越方便了,所以以后自己的技术博文可能都会放到CSDN上面,今后本网站偶尔发布比较重要的技术博文的图片也可能将直接是链接到CSDN上的(因为加载更快),然后自己的网站将会趋向于发表自己的一些心得体会