一条命令搞定
1.批量修改文件名
1.1 增加内容
有多个sh文件,现在用一条命令做以下修改
# 修改前
1.sh 2.sh 3.sh
# 修改后
1_hehe.sh 2_hehe.sh 3_hehe.sh
使用sed分组功能
ls *.sh|sed -nr 's#((.*)\.sh)#mv \1 \2_hehe.sh#gp' | bash
将命令拆解一下
# sed替换中最外边的括号是匹配整个文件名的,即上边命令中的 \1
$ ls *.sh|sed -r 's#((.*)\.sh)#\1#g'
1.sh
2.sh
3.sh
# 里边的括号是匹配文件名中的数字,即上边命令中的 \2
$ ls *.sh|sed -r 's#((.*)\.sh)#\2#g'
1
2
3
# 有了分组,再配合mv命令拼接
$ ls *.sh|sed -nr 's#((.*)\.sh)#mv \1 \2_hehe.sh#gp'
mv 1.sh 1_hehe.sh
mv 2.sh 2_hehe.sh
mv 3.sh 3_hehe.sh
# 最后通过管道执行bash使命令生效
$ ls *.sh|sed -nr 's#((.*)\.sh)#mv \1 \2_hehe.sh#gp' | bash
$ ls
1_hehe.sh 2_hehe.sh 3_hehe.sh