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 ,那么借助于下⾯的命令就可以轻松的实现批量替换格式:
unix时间戳转换日期格式批量替换为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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论