Linux/MacOS批量删除文件中的^M符号

在Linux/MacOS中,Windows编辑过的文件常带^M符号,它源于Windows的回车换行符。^M在Linux下可能导致问题。文章介绍了如何使用dos2unix工具进行批量删除,包括安装方法和不同场景下的批量处理技巧,旨在简化文件处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Windows系统下编辑过的文本文件通常都会在行尾留下 "^M"符号,在Linux下使用 cat -v filename 可以查看文件中的 ^M 符号。

多出的 ^M 符号是由于Windows/DOS中换行使用的是\r\n两个字符,\r是回车(carriage),\n是换行符(newline)。这个是上古时期使用电传打字机遗留下来的问题,这里不赘述了,感兴趣的同学可以google/baidu。而Linux/macOS下的换行使用的是单个字符\n,没有\r。所以多出的^M符号其实就是回车符,即\r。

\r经常会导致一些莫名其妙的问题,git diff时也会看到^M符号,比较影响观感。所以在Linux/macOS下还是把去掉的好。

删除^M的方式有好几种(dos2unix、vim、sed)其中dos2unix是最简单实用的方式,本文只介绍dos2unix,毕竟我们的目标是解决问题。自然选择最简单实用的方式。

如何使用dos2unix删除^M

Step1 安装 dos2unix

如果系统里面已经有dos2unix了,请直接跳到Step2。

使用系统的包管理工具安装dos2unix

如果是Ubuntu/Debian:

sudo apt-get update
sudo apt-get install dos2unix

如果是macOS

brew install dos2unix

Step2 使用dos2unix删除^M

使用方式如下,此处的filename替换为需要处理的文件名或者文件路径

dos2unix filename

如何批量删除多个文件中的^M

上面的方式单词只能处理一个文件,如果有大量文件需要处理,就不太方便了,下面介绍批量处理的方式。

方法一:使用通配符

处理当前目录下的所有文件(不含子目录中的文件)

dos2unix *

处理当前目录下文件名以".py"结尾的所有文件(不含子目录中的文件)

dos2unix *.py

方法二:借助find实现批量处理

上述通配符方式不能递归到子目录中,不能进行更精确的选择。借助find可以实现递归和更精确的选择。find命令非常强大,用法也很多,这里只列举几种,更复杂的用法请自行学习find命令的使用。

处理当前目录下的所有普通文件(含子目录)

find $PWD -type f -exec dos2unix {} \;

处理当前目录下文件名以".py"结尾的所有文件(含子目录中的文件)

find $PWD -name "*.py" -exec dos2unix {} \;

你也可以通过我的独立博客——胡刘郏的技术博客,获取本篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值