linux sed命令更新时间戳脚本

生产环境前端代码html页面中的js和css都会打上时间戳,以便利用浏览器缓存省去每次都从服务器上请求静态文件,目前的做法是将无时间戳的代码整体上传到生产环境然后利用java程序全量替换所有html中的js&&css时间戳。

为了偷懒,在以后的迭代开发中,一次只是想上传少量的页面,不想全量上传,于是就估摸着能不能每次更新只更新修改过的js的引用时间戳。比如最近更新了a.js,那么只想让引用了的a.js的html更新其时间戳。

<script type="text/javascript" src="../a.js"></script>或者<script type="text/javascript" src="../a.js?version=旧的毫秒"></script>
更新为
<script type="text/javascript" src="../a.js?version=新的毫秒"></script>
使用Linux脚本 偷懒如下

1.新建 test.sh
 1 #!/bin/bash
 2 
 3 echo "" > sed.log
 4 for line in $(cat fileLine)
 5 do
 6 js_name="${line}"
 7 
 8 #增加新版本号
 9 new_js="${js_name}?version=$(date '+%s')"
10 echo $new_js
11 #将匹配到存在目标字符的文件记录到sed.log
12 find /home/test_xgh/project -name '*.html' |xargs grep -rwl "${js_name}" >> sed.log
13 #对目标文件集合使用sed命令替换,此sed意思为匹配到 xxx.js?version=毫秒数 或者xxx.js的 都用new_js替换
14 sed -i "s/\(${js_name}?version=[0-9]*\)\|\(${js_name}\)/${new_js}/g" `find /home/test_xgh/project -name '*.html' |xargs grep -rwl "${js_name}"`
15 done

2. chmod +x test.sh 增加执行权限。
3.sh test.sh 走起。
脚本同级目录 新建fileLine 文件,每行写上要更新时间戳的js或css名称。

 
posted @ 2022-04-26 11:46  夏侯胖墩  阅读(234)  评论(0编辑  收藏  举报