使用git 的時(shí)候碰到git將unix換行符轉(zhuǎn)換為windows換行符的問(wèn)題,需要使用dos2unix命令將文件轉(zhuǎn)換為unix格式。
dos2unix命令用來(lái)將DOS格式的文本文件轉(zhuǎn)換成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作為斷行標(biāo)志的,表示成十六進(jìn)制就是0D 0A。而Unix下的文本文件是以\n作為斷行標(biāo)志的,表示成十六進(jìn)制就是0A。DOS格式的文本文件在Linux底下,用較低版本的vi打開(kāi)時(shí)行尾會(huì)顯示^M,而且很多命令都無(wú)法很好的處理這種格式的文件,如果是個(gè)shell腳本,。而Unix格式的文本文件在Windows下用Notepad打開(kāi)時(shí)會(huì)拼在一起顯示。因此產(chǎn)生了兩種格式文件相互轉(zhuǎn)換的需求,對(duì)應(yīng)的將UNIX格式文本文件轉(zhuǎn)成成DOS格式的是unix2dos命令。
語(yǔ)法:
dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
選項(xiàng)
1. -k:保持輸出文件的日期不變
2. -q:安靜模式,不提示任何警告信息
3. -V:查看版本
4. -c:轉(zhuǎn)換模式,模式有:ASCII, 7bit, ISO, Mac, 默認(rèn)是:ASCII
5. -o:寫(xiě)入到源文件
6. -n:寫(xiě)入到新文件
1
2
3
4
5
6
7
8
參數(shù)
參數(shù):需要轉(zhuǎn)換到的文件。
1
實(shí)例
最簡(jiǎn)單的用法就是dos2unix直接跟上文件名:
dos2unix file
1
如果一次轉(zhuǎn)換多個(gè)文件,把這些文件名直接跟在dos2unix之后。(注:也可以加上-o參數(shù),也可以不加,效果一樣)
dos2unix file1 file2 file3
dos2unix -o file1 file2 file3
上面在轉(zhuǎn)換時(shí),都會(huì)直接在原來(lái)的文件上修改,如果想把轉(zhuǎn)換的結(jié)果保存在別的文件,而源文件不變,則可以使用-n參數(shù)。
dos2unix oldfile newfile
如果要保持文件時(shí)間戳不變,加上-k參數(shù)。所以上面幾條命令都是可以加上-k參數(shù)來(lái)保持文件時(shí)間戳的。
dos2unix -k file
dos2unix -k file1 file2 file3
dos2unix -k -o file1 file2 file3
dos2unix -k -n oldfile newfile
以上是轉(zhuǎn)換單個(gè)文件,如果要轉(zhuǎn)換目錄或文件夾的話,請(qǐng)往下看:
Linux本身提供了dos2unix和unix2dos這兩個(gè)命令來(lái)實(shí)現(xiàn)windows和linux文件的轉(zhuǎn)換,
但是。dos2unix和unix2dos本身沒(méi)有提供遞歸也就是批量修改的方式,這樣一來(lái)我們就需要借助于xargs命令了
xargs的命令的作用就是將參數(shù)列表轉(zhuǎn)換成小塊分段傳遞給其他命令,借助于xargs,我們可以很簡(jiǎn)單的實(shí)現(xiàn)批量替換;
這里假設(shè)我需要替換的文件所在目錄為 public/components目錄下。
如果批量替換public/components 目錄下的所有文件使用如下命令:
find public/components/ -name "*" | xargs dos2unix
其中,”*”號(hào)表示所有文件。
要更改文件格式的后綴為.py ,那么借助于下面的命令就可以輕松的實(shí)現(xiàn)批量替換格式:
批量替換為linux文件格式:
sudo find public/components/ -name "*.py" | xargs dos2unix
批量替換為dos文件格式:
sudo find public/components/ -name "*.py" | xargs unix2dos
優(yōu)點(diǎn):批量替換,工作量小, 總的來(lái)說(shuō),方法二借助于 管道符和xargs來(lái)實(shí)現(xiàn)的批量命令,將方法二修改一下就可以實(shí)現(xiàn)很多的批量操作,
比如:
1.批量刪除整個(gè)linux系統(tǒng)中后綴為.tmp的文件;那么命令可以這么寫(xiě):
sudo find /home/test -name "*.tmp" | xargs rm -f
2.刪除整個(gè)linux系統(tǒng)中與apache相關(guān)的文件:
sudo find /home/test -name "*apache" | xargs rm -rf
轉(zhuǎn)自:https://blog.csdn.net/leedaning/article/details/53024290