dos2unix命令详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
dos2unix命令详解
原⽂链接:https:///leedaning/article/details/53024290
使⽤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。