一:脚本功能:
批量处理目录以及子目录下的文件格式问题,能够轻易的将linux格式转换为dos格式。
二:写此博客的意义:
1、只是为了熟悉shell脚本,仅此而已
三:下面介绍两种方法使用脚本:
1、本教程附带给你脚本,按照教程使用即可,不用过多的了解内部代码结构。
2、解释编写的脚本、可自行学习,如有不理解的地方,欢迎添加QQ:2081795560 进行叫交流学习(有妹子就更好了)。
四:使用脚本介绍:
下载链接:
地址1:https://files.cnblogs.com/files/wang-li/UnixChangeWindows.sh
地址2:点击下载
系统所需要的命令:
1、unix2dos 2、awk 如果没有此命令,则需要安装后执行脚本
使用说明:
1、复制脚本至linux机器上,赋给相应的权限(chmod 755 脚本名)。
2、用法1:脚本名 相对路径 用法2:脚本名 绝对路径 用法3:复制该脚本到需要转换的目录下,直接执行脚本名即可,无需跟路径
解释一下用法:
假如我的脚本名为:UCW.sh 需要转换的目录为:/home/Test/
进入到UCW.sh所在的目录下,
赋权限,chomd 755 UCW.sh
下面几个用法随意选一个来转换即可
用法1:./UCW.sh Test/ 此时应该在/home/下执行此脚本
用法2:绝对路径 ./UCW.sh /home/Test/
用法3:cp UCW.sh /home/Test ,然后执行:/home/Test/UCW.sh
五:解释编写的脚本
由于没有写函数,所以,代码有些地方过于重复,所以,解释一段即可,由于自己的表达能力有限,如果哪位仁兄看到了在下的代码,欢迎给在下注释。
1 #!/bin/bash 2 3 if [ -z "$1" ];then #判断命令是否跟参数,[ -z ] 如果为空 则返回true 4 5 FileName=$(pwd) #获取当前目录 6 7 find $PathName -ls | awk '{print $3 " " $11}' | grep '^.*' > $PathName/log.txt #利用find命令嘉awk来获取 文件的属性和文件绝对路径 8 9 grep '^-' $PathName/log.txt | awk '{print $2}' > $PathName/log2.txt #获取文件属性以'-'的文件列表,并且获取文件绝对路径 10 11 which unix2dos 2> $PathName/error.log #检测一下用户是否有unx2dos这个命令,并且将错误信息输入到文件中。其实还可以用$?来检测的 12 if [ -s $PathName/error.log ];then #错误信息内有错误输出,则提示用户未安装此命令,并且退出此脚本 13 echo -e "Also need to install the following sofware: unix2dos" 14 rm -rf $PathName/error.log 15 exit -1 #非正常退出 可以用$?来检测 16 fi 17 18 cat $PathName/log2.txt | while read line #读入上面已经录取到的文件列表,开始逐步检测 19 do 20 echo "unix2dos:${line}" 21 unix2dos $line # 其实整篇脚本核心在此 22 done 23 24 clear 25 echo "runing success" #打印脚本装换成功 26 else 27 FilePath=$(pwd) 28 29 if [[ $1 == /* ]];then #判断是否是绝对路径,还有,我也不知道这个[[ ]]是什么意思,如果谁知道,请告知与我,谢谢 30 PathName=$1; 31 32 if [ -e $PathName ];then # 判断是否是存在这个目录 33 echo " " 34 else 35 echo "unix2dos:cannot change $PathName : No such directory" 36 exit -1 #不存在,打印错误信息,并且以不正常的形式推出 37 fi 38 39 find $PathName -ls | awk '{print $3 " " $11}' | grep '^.*' > $PathName/log.txt 40 41 grep '^-' $PathName/log.txt | awk '{print $2}' > $PathName/log2.txt 42 43 which unix2dos 2> $PathName/error.log 44 if [ -s $PathName/error.log ];then 45 echo -e "Also need to install the following sofware: unix2dos" 46 rm -rf $PathName/error.log 47 exit -1 48 fi 49 50 cat $PathName/log2.txt | while read line 51 do 52 echo "unix2dos:${line}" 53 unix2dos $line 54 done 55 56 clear 57 echo "runing success" 58 59 else 60 PathName=$FilePath/$1 #由于是觉得路径,则不需要检测 61 62 if [ -e $PathName ];then #判断是否是正常目录 63 echo " " 64 else 65 echo "unix2dos:cannot change $PathName : No such directory" 66 exit -1 67 fi 68 69 find $PathName -ls | awk '{print $3 " " $11}' | grep '^.*' > $PathName/log.txt 70 71 grep '^-' $PathName/log.txt | awk '{print $2}' > $PathName/log2.txt 72 73 which unix2dos 2> $PathName/error.log 74 if [ -s $PathName/error.log ];then 75 echo -e "Also need to install the following sofware: unix2dos" 76 rm -rf $PathName/error.log 77 exit -1 78 fi 79 80 cat $PathName/log2.txt | while read line 81 do 82 echo "unix2dos:${line}" 83 unix2dos $line 84 done 85 86 clear 87 echo "runing success" 88 fi 89 90 fi 91 92 exit 0 #退出