linux格式批量轉換為dos格式,linuxdos
註:寫的只是基本知識,望高手勿噴,寫這個不是為了炫耀,只是為了方便其他人,僅此而已。
一:指令碼功能:
批量處理目錄以及子目錄下的檔案格式問題,能夠輕易的將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