linux格式批量轉換為dos格式


一:腳本功能:

批量處理目錄以及子目錄下的文件格式問題,能夠輕易的將linux格式轉換為dos格式。

二:寫此博客的意義:

1、只是為了熟悉shell腳本,僅此而已

 

三:下面介紹兩種方法使用腳本:

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.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 #退出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM