1、要创建的文本内容:
b.txt.bak
cat /root/shellDir/program/sedTest/testFile/b.txt.bak
Linux系统发送告警脚本【www.vipsrc.com】.sh
MySQL数据库备份多循环【www.vipsrc.com】.sh
nginx 访问访问日志按天切割【www.vipsrc.com】.sh
2、根据文本内容创建对应的文件:
touchFile.sh.bak
cat touchFile.sh.bak
#!/bin/bash
currPathFile=/root/shellDir/program/sedTest/testFile/b.txt.bak
IFS=$'\n'
for i in `cat $currPathFile`
do
touch $i
done
执行后的效果:
3、重命名文件 (将后面的网站名称给去掉)
rename.sh.bak
cat rename.sh.bak
#!/bin/bash
IFS=$'\n'
pwd=/root/shellDir/program/sedTest/testFile
#oraginalName=($(ls $pwd *.sh)) 原先这里是这样写的,发现这种写法会产生多种数据,它显示通配符的数据和绝对路径的所有文件,很J2怪。
oraginalName=($(ls $pwd | ls *.sh))
changeName=($(ls $pwd | awk -F '【' '/sh$/{print $1 ".sh"}'))
count=1
for (( i = 0; i < ${#oraginalName[@]}; ++i ));
do
count=1
for (( j = 0; j < ${#oraginalName[@]}; ++j ));
do
if [ $count==$i ];then
# echo " ${oraginalName[i]} ---> ${changeName[i]}";
#mv ${oraginalName[i]} ${changeName[i]}
mv "$pwd/${oraginalName[i]}" "$pwd/${changeName[i]}"
break
fi
done
let count++
done
执行效果:
2021年1月14日15:49:28 时隔几个月,然后发现 rename更好用。。。 执行下面操作即可,上面的代码就当锻炼一点逻辑思维了
rename "【www.vipsrc.com】" "" *.sh
4、批量转换编码格式
convertFile.sh.bak
cat convertFile.sh.bak
#!/bin/bash
### 将 values_here 替换为输入编码
FROM_ENCODING="iso-8859-1"
### 输出编码 (UTF-8)
TO_ENCODING="UTF-8"
### 转换命令
CONVERT=" iconv -f $FROM_ENCODING -t $TO_ENCODING"
### 使用循环转换多个文件
for file in *.converted; do
$CONVERT "$file" -o "${file%.sh}.gbk.converted"
done
exit 0
file指令可查看文件的编码格式
ls *.sh | xargs -I {
} file {
}
或
file -i *.sh
参考博客:https://linux.cn/article-7959-1.html
执行效果:
没转换之前:
转换后:
但是转换之后还是乱码,很烦。在win上面显示是正常的,也转成UTF-8了,然后放到Linux里面执行又乱码了。 echo $LANG ------> en_US.UTF-8
(估计要像群友说的:在Windows下编辑复制文本,在Linux上vim,然后右键粘贴)
如果有什么好的方法欢迎一起讨论。
5、重定向到markdown
脚本内容:
appendFile.sh.bak
#!/bin/bash
IFS=$'\n'
pwd=/drives/e/jpg/test/convert
fileName=($(ls $pwd| ls *.sh))
for (( i = 0; i < ${#fileName[@]}; ++i ));
do
cat >> $pwd/test.md <<EOF
\`\`\`bash
# ${
fileName[i]}
`cat ${fileName[i]}`
\`\`\`
EOF
done
上面脚本碰到的坑:
1、cat里面的markdown格式的 `号要加转义,否则一直卡住,ctrl+c退出后,终端直接掉线了,要求重连。
2、cat重定向的最后的EOF要顶格写,不然报莫名其妙的错。
执行后的效果:(但是内容乱码,如果老哥们,有更好的解决方法欢迎讨论讨论)
把所有的*.sh内容追加到 markdown格式里面
文章到此差不多结束了,搞上面这么多的操作目的是,将之前学习的shell脚本做的理解注释,发出来。做个笔记。比如: