你的位置:首页 > 操作系统

[操作系统]linux格式批量转换为dos格式


注:写的只是基本知识,望高手勿喷,写这个不是为了炫耀,只是为了方便其他人,仅此而已。

一:脚本功能:

批量处理目录以及子目录下的文件格式问题,能够轻易的将linux格式转换为dos格式。

二:写此博客的意义:

1、本着开源精神,目的:只是为了方便更多的人、不要花太多的时间在这种无聊的事情上。

2、现在还没有批量处理的一个脚本(至少我还没发现),那么,写出来,真的有人需要呢。

3、如果用户目录下还有更多的子目录,单单依靠用户自行转换,文件较少还能行,如果多的话,就有点力不从心。

 

三:下面介绍两种方法使用脚本:

1、本教程附带给你脚本,按照教程使用即可,不用过多的了解内部代码结构。

2、解释编写的脚本、可自行学习,如有不理解的地方,欢迎添加QQ:2081795560 进行叫交流学习(有妹子就更好了)。

 

四:使用脚本介绍:

下载链接: 

地址1:http://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.log15     exit -1 #非正常退出 可以用$?来检测16   fi17 18   cat $PathName/log2.txt | while read line #读入上面已经录取到的文件列表,开始逐步检测19   do20     echo "unix2dos:${line}"21     unix2dos $line # 其实整篇脚本核心在此22   done23   24   clear 25   echo "runing success" #打印脚本装换成功26 else27   FilePath=$(pwd)28 29   if [[ $1 == /* ]];then #判断是否是绝对路径,还有,我也不知道这个[[  ]]是什么意思,如果谁知道,请告知与我,谢谢30     PathName=$1;31 32     if [ -e $PathName ];then # 判断是否是存在这个目录33       echo " "34     else35       echo "unix2dos:cannot change $PathName : No such directory"36       exit -1 #不存在,打印错误信息,并且以不正常的形式推出37     fi38 39     find $PathName -ls | awk '{print $3 "  " $11}' | grep '^.*' > $PathName/log.txt 40   41     grep '^-' $PathName/log.txt | awk '{print $2}' > $PathName/log2.txt42     43     which unix2dos 2> $PathName/error.log44     if [ -s $PathName/error.log ];then45       echo -e "Also need to install the following sofware: unix2dos"46       rm -rf $PathName/error.log47       exit -148     fi49 50     cat $PathName/log2.txt | while read line51     do52       echo "unix2dos:${line}"53       unix2dos $line54     done55   56     clear57     echo "runing success"58     59   else60     PathName=$FilePath/$1 #由于是觉得路径,则不需要检测61 62     if [ -e $PathName ];then #判断是否是正常目录63       echo " "64     else65       echo "unix2dos:cannot change $PathName : No such directory"66       exit -167     fi68 69     find $PathName -ls | awk '{print $3 "  " $11}' | grep '^.*' > $PathName/log.txt 70     71     grep '^-' $PathName/log.txt | awk '{print $2}' > $PathName/log2.txt72     73     which unix2dos 2> $PathName/error.log74     if [ -s $PathName/error.log ];then75       echo -e "Also need to install the following sofware: unix2dos"76       rm -rf $PathName/error.log77       exit -178     fi79 80     cat $PathName/log2.txt | while read line81     do82       echo "unix2dos:${line}"83       unix2dos $line84     done85     86     clear87     echo "runing success"88   fi89 90 fi91 92 exit 0 #退出


 脚本介绍完毕。

还是那句话,本人小白,高手勿喷,我只是希望,这个小脚本,真的能够帮助大家解决问题,仅此而已。

  青青河边草  2016-05-16 10:21:11