使用Shell批量修改文件后缀名

使用Shell批量修改文件后缀名

技术杂谈小彩虹2021-08-22 19:38:12150A+A-

背景

周末要将一个项目改造成TS,所以需要将所有文件的后缀名改为ts,有些IDE已经支持这个功能了,但是心血来潮,决定用shell脚本改一下

文件查找

使用find命令将需要查找的文件输出到指定文件中,因为可能文件目录比较多,我就定义了一个数组,使用循环输入,将其输出到了一个临时文件中,这里的 > 为导出文件流,且覆盖指定文件,如果使用 >>则为追加,这里面注意循环数组我用的是${pathList[*]},如果这里是$pathList则默认导出数组第一项

# 定义文件地址
pathList=("./routes/" "./public/" "./views/")
for p in ${pathList[*]}
do
	find $p -type f -name '*.js' > file.txt
done

正则替换

这块本来想使用sed命令的,奈何只支持文件,不支持字符串,也可能我没找到方法,于是采用字符串正则替换,字符串替换语法为(源字符串/正则匹配规则/替换字符串)

for f in `cat ./file.txt`
do
	path=${f/\.js/\.ts}
	mv $f $path
done

删除临时文件

rm -rf ./file.txt

总结

代码很简单,但是让我又一次熟悉了shell,在我们使用nodejs的过程中如果结合shell处理文件,可能会比原生nodejs要好很多,下面把完整代码粘贴出来

#!/bin/bash 
# 定义文件地址
pathList=("./routes/" "./public/" "./views/")
# 找到文件
for p in ${pathList[*]}
do
	find $p -type f -name '*.js' > file.txt
done

for f in `cat ./file.txt`
do
	path=${f/\.js/\.ts}
	mv $f $path
done
rm -rf ./file.txt



点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们