dos2unix命令詳解

  

基礎命令學習目錄首頁html

 

原文連接:https://blog.csdn.net/leedaning/article/details/53024290linux

使用git 的時候碰到git將unix換行符轉換爲windows換行符的問題,須要使用dos2unix命令將文件轉換爲unix格式。git

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命令。shell

語法:apache

dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]

選項windows

1. -k:保持輸出文件的日期不變 2. -q:安靜模式,不提示任何警告信息 3. -V:查看版本 4. -c:轉換模式,模式有:ASCII, 7bit, ISO, Mac, 默認是:ASCII 5. -o:寫入到源文件 6. -n:寫入到新文件

參數bash

參數:須要轉換到的文件。

實例
最簡單的用法就是dos2unix直接跟上文件名:post

dos2unix file 

若是一次轉換多個文件,把這些文件名直接跟在dos2unix以後。(注:也能夠加上-o參數,也能夠不加,效果同樣)學習

dos2unix file1 file2 file3 
dos2unix -o file1 file2 file3 

上面在轉換時,都會直接在原來的文件上修改,若是想把轉換的結果保存在別的文件,而源文件不變,則可使用-n參數。ui

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
相關文章
相關標籤/搜索