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名称。