在使用git的时候,可能会遇到git将unix换行符转换为换行符的问题,需要使用命令将文件转换为unix格式。
该命令用于将DOS格式的文本文件转换为UNIX格式(DOS/MAC转UNIX文本文件)。DOS文本文件使用\r\n作为换行符,十六进制表示为0D 0A。Unix文本文件使用\n作为换行符,十六进制表示为0A。DOS格式的文本文件在Linux下用旧版本的vi打开时会在行末显示^M,而且很多命令无法很好处理该格式的文件,比如shell脚本。Unix格式的文本文件在Linux下打开时会一起显示。因此需要将两种格式的文件互相转换,对应的命令就是将UNIX格式的文本文件转换为DOS格式。
语法:
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 file
如果要一次性转换多个文件,则直接在后面加上文件名即可。(注:也可以加-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本身提供了这两个命令来实现Linux文件的转换。
但是它并没有提供递归的方法,也就是批量修改的方法,所以我们需要使用xargs命令。
xargs命令的作用是将参数列表转换成小的块并传递给其他命令,借助xargs,我们可以轻松实现批量替换;
这里我假设我需要替换的文件所在的目录在/目录下。
如果要批量替换/目录下的所有文件,使用以下命令:
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
优点:批量替换,工作量小。一般来说方法2都是利用管道和xargs来实现批处理命令的。修改方法2可以实现很多批量操作。
例如:
1、批量删除整个Linux系统里所有后缀为.tmp的文件;那么命令可以这样写:
sudo find /home/test -name "*.tmp" | xargs rm -f
2、删除整个Linux系统内的相关文件:
sudo find /home/test -name "*apache" | xargs rm -rf
:
扫一扫在手机端查看
-
Tags : shell dos2unix
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。