1. 背景:
我们编写程序有时候 windows 上写代码,有时候 linux 上写代码;但是 win 下的文件 copy 到 linux 行末总是多了个 ^M,
2. 原因:
其实是因为 win 与 linux 下的文本文件换行符不同,Linux 下换行符是 \n,而 Windows 下换行符是 \r\n。
所以从 windows 上转到 linux 的文件用 VIM 打开的话 VIM 无法识别换行符,所以需要转换。
3. 工具:
使用工具 doc2unix 可以实现转换
$ sudo apt install dos2unix
$ dos2unix file_to_convert
4. python 批量的转换
import os
if __name__ == '__main__':
begin_time = time.time()
dir = r'/home/f'
files = find_files_with_suffix(dir, target_suffix='py')
for item in files:
os.system("dos2unix {}".format(item))
print(item)
print('cost time: {} s'.format(time.time() - begin_time))
其中,find_files_with_suffix 方法,可以在我的 python 使用 walk 搜索文件 中找到;
5. 其它的方式:
sed 's/\r//' filename -i