如何使用UNIX命令行工具移除文件夹下所有.txt文件内的换行符
批量删除TXT文件换行符并原地覆盖的UNIX命令行方案
你遇到的bash: *.txt: ambiguous redirect报错翻译为:bash:*.txt:模糊重定向,原因是输入重定向符<无法同时匹配多个输入文件,所以此前的单文件处理命令无法直接批量生效。
方案1:bash循环+tr(全平台兼容,无额外依赖)
tr是POSIX标准工具,所有类UNIX系统(Linux、macOS、BSD等)都默认支持,批量处理命令如下:
for file in *.txt; do tr -d '\n' < "$file" > "$file.tmp" && mv "$file.tmp" "$file"; done
说明:
- 遍历当前目录下所有
.txt后缀的文件,逐个处理 - 用
tr -d '\n'删除文件内所有换行符,先写入临时文件避免操作异常损坏原数据 - 处理完成后自动用临时文件覆盖原文件,保留原文件名不变
方案2:sed原地修改(更简洁,适合GNU sed环境)
如果你使用的是默认带GNU sed的Linux发行版,可以用更简洁的单条命令批量处理:
sed -i ':a;N;$!ba;s/\n//g' *.txt
说明:
-i参数开启原地修改模式,无需额外生成临时文件- 命令逻辑为一次性读取整个文件内容,替换所有换行符为空,直接写入原文件
- 如果你使用的是macOS默认的BSD sed,命令调整为:
sed -i '' ':a;N;$!ba;s/\n//g' *.txt
注意事项
操作前建议先备份所有源文件,避免误操作导致数据丢失:
mkdir -p ./txt_backup && cp *.txt ./txt_backup/
内容的提问来源于stack exchange,提问作者Aux
相关产品推荐
相关产品推荐

