unix系统下如何无需打开文件批量查询文件的dos/unix格式?
批量查询Unix/DOS文本文件格式的方法
核心原理是两种格式的换行符差异:DOS格式使用\r\n(CRLF)作为行尾标记,Unix格式仅使用\n(LF),无需打开文件进编辑器即可通过检测行尾符批量判断格式,以下是几种常用方案:
- 方案1:使用系统自带
file命令
无需额外安装工具,适合绝大多数场景,直接执行即可输出文件格式信息:
检测当前目录下所有文件:file *
递归检测当前目录及所有子目录的文件:find . -type f -exec file {} +
输出结果标识规则:带
with CRLF line terminators后缀 → DOS格式
无上述后缀的普通文本文件 → Unix格式 - 方案2:使用
grep精准筛选指定格式的文件
如果需要直接过滤出某一类格式的文件,可以用grep匹配\r字符实现:
递归输出所有DOS格式的文本文件名:grep -rIl $'\r' ./
递归输出所有Unix格式的文本文件名:grep -rIL $'\r' ./
参数说明:-r递归扫描,-I忽略二进制文件,-l只输出匹配成功的文件名,-L只输出匹配失败的文件名,$'\r'是Shell原生的CR字符写法。 - 方案3:使用
dos2unix工具自带检测能力
如果你已经安装了dos2unix格式转换工具,可以用它的信息查询模式,不会修改原文件,还能直接统计换行符数量:
批量检测当前目录所有文本文件:dos2unix -i *
输出会分别列出每个文件的DOS换行符数量、Unix换行符数量,判断更精准。
内容的提问来源于stack exchange,提问作者PTK
相关产品推荐
相关产品推荐

