zoukankan      html  css  js  c++  java
  • linux格式批量转换为dos格式

    一:脚本功能:

    批量处理目录以及子目录下的文件格式问题,能够轻易的将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 #退出

    欢迎转发! 请保留源地址: https://www.cnblogs.com/NoneID
  • 相关阅读:
    可以
    全链路压测方案
    PyTestReport使用
    查看mysql的版本号
    Centos7 下的SVN安装与配置
    confluence中org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket accept failed的解决方法
    CentOS7安装部署zabbix3.4操作记录
    Aasible中cryptography兼容性报错解决办法
    windows10中git-bash闪退的解决办法
    jira发送邮件报错
  • 原文地址:https://www.cnblogs.com/NoneID/p/5497202.html
Copyright © 2011-2022 走看看