dos2unix命令將dos檔案轉換為unix格式
使用git 的時候碰到git將unix換行符轉換為windows換行符的問題,需要使用dos2unix命令將檔案轉換為unix格式。
dos2unix命令用來將DOS格式的文字檔案轉換成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文字檔案是以\r\n作為斷行標誌的,表示成十六進位制就是0D 0A。而Unix下的文字檔案是以\n作為斷行標誌的,表示成十六進位制就是0A。DOS格式的文字檔案在Linux底下,用較低版本的vi開啟時行尾會顯示^M,而且很多命令都無法很好的處理這種格式的檔案,如果是個shell指令碼,。而Unix格式的文字檔案在Windows下用Notepad開啟時會拼在一起顯示。因此產生了兩種格式檔案相互轉換的需求,對應的將UNIX格式文字檔案轉成成DOS格式的是unix2dos命令。
語法:
dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
選項
1. -k:保持輸出檔案的日期不變
2. -q:安靜模式,不提示任何警告資訊
3. -V:檢視版本
4. -c:轉換模式,模式有:ASCII, 7bit, ISO, Mac, 預設是:ASCII
5. -o:寫入到原始檔
6. -n:寫入到新檔案
引數
引數:需要轉換到的檔案。
例項
最簡單的用法就是dos2unix直接跟上檔名:
dos2unix file
如果一次轉換多個檔案,把這些檔名直接跟在dos2unix之後。(注:也可以加上-o引數,也可以不加,效果一樣)
dos2unix file1 file2 file3
dos2unix -o file1 file2 file3
上面在轉換時,都會直接在原來的檔案上修改,如果想把轉換的結果儲存在別的檔案,而原始檔不變,則可以使用-n引數。
dos2unix oldfile newfile
如果要保持檔案時間戳不變,加上-k引數。所以上面幾條命令都是可以加上-k引數來保持檔案時間戳的。
dos2unix -k file
dos2unix -k file1 file2 file3
dos2unix -k -o file1 file2 file3
dos2unix -k -n oldfile newfile
以上是轉換單個檔案,如果要轉換目錄或資料夾的話,請往下看:
Linux本身提供了dos2unix和unix2dos這兩個命令來實現windows和linux檔案的轉換,
但是。dos2unix和unix2dos本身沒有提供遞迴也就是批量修改的方式,這樣一來我們就需要藉助於xargs命令了
xargs的命令的作用就是將引數列表轉換成小塊分段傳遞給其他命令,藉助於xargs,我們可以很簡單的實現批量替換;
這裡假設我需要替換的檔案所在目錄為 public/components
目錄下。
如果批量替換public/components
目錄下的所有檔案使用如下命令:
find public/components/ -name "*" | xargs dos2unix
其中,”*”號表示所有檔案。
要更改檔案格式的字尾為.py ,那麼藉助於下面的命令就可以輕鬆的實現批量替換格式:
批量替換為linux檔案格式:
sudo find public/components/ -name "*.py" | xargs dos2unix
批量替換為dos檔案格式:
sudo find public/components/ -name "*.py" | xargs unix2dos
優點:批量替換,工作量小, 總的來說,方法二藉助於 管道符和xargs來實現的批量命令,將方法二修改一下就可以實現很多的批量操作,
比如:
1.批量刪除整個linux系統中字尾為.tmp的檔案;那麼命令可以這麼寫:
sudo find /home/test -name "*.tmp" | xargs rm -f
2.刪除整個linux系統中與apache相關的檔案:
sudo find /home/test -name "*apache" | xargs rm -rf