使用dos2unix批量轉換文件
dos2unix是Linux下的一個用戶轉換格式的程序,由於windows上文件的結束符和linux上的不同,那么在windows上編寫的文件或者是腳本在Linux上就會遇到類似於下面的錯誤:
/bin/sh^M: bad interpreter: No such file or directory
出現上述的錯誤真實因為結束符的不同,要解決上述問題,只需要轉換一下就行了
方法一:針對於單個文件或少量文件:
使用vi 編輯sh腳本或者其他的腳本文件,然后按ESC進入vi的命令行模式,輸入下面的命令:
:set fileformat=unix
當然如果要將文件格式設定為dos文件格式,也就是windows的格式,那么輸入下面的命令就行了
:set fileformat=dos
修改完成后,使用下面的命令查看文件的格式類型:
:set ff
缺點:只適合少量文件,當文件數較多時,工作量巨大
方法二:批量更改linux文件格式
和方法一類似的,Linux本身提供了dos2unix和unix2dos這兩個命令來實現windows和linux文件的轉換,
但是。dos2unix和unix2dos本身沒有提供遞歸也就是批量修改的方式,這樣一來我們就需要借助於xargs命令了
xargs的命令的作用就是將參數列表轉換成小塊分段傳遞給其他命令,借助於xargs,我們可以很簡單的實現批量替換;
這里假設我需要替換的文件所在目錄為 /home/test目錄下,要更改文件格式的后綴為.py ,那么借助於下面的命令就可以輕松的實現批量替換格式:
批量替換為linux文件格式:
sudo find /home/test -name "*.py" | xargs dos2unix
批量替換為dos文件格式:
sudo find /home/test -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
只要理解了xargs的功能。
安裝相關命令:
sudo apt-get -y install dos2unix
sudo apt-get -y install unix2dos
批量去掉[noeol]
sudo find /home/test -name "*.*" | xargs cat -A