You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cat | xargs mkdir报错文件名过长,含\r字符如何解决?

问题原因与解决方法

为什么会出现\r字符?

你的folders.txt采用的是Windows风格的换行符(CRLF,即\r\n),而macOS默认使用Unix风格的换行符(LF,即\n)。当cat读取文件时,\r(回车符)没有被识别为换行分隔符,反而被当作文件名的一部分传递给xargs,导致所有行的内容被拼接成一个超长的文件名,最终触发"File name too long"错误。

解决方法

方法1:转换文件换行符为Unix风格

使用dos2unix工具转换文件(若未安装,可通过brew install dos2unix安装):

dos2unix folders.txt

转换完成后,执行原命令即可:

cat folders.txt | xargs mkdir

方法2:在命令中直接过滤\r字符

用tr命令删除文件中的\r字符,再传递给xargs:

cat folders.txt | tr -d '\r' | xargs mkdir

方法3:指定xargs的分隔符

告诉xargs以换行符作为分隔符,自动忽略\r:

xargs -d '\n' mkdir < folders.txt

方法4:用while循环处理(通用且稳妥)

这种方式能兼容不同换行符,还支持带空格的文件名:

while IFS= read -r line; do
    mkdir "$line"
done < folders.txt

内容的提问来源于stack exchange,提问作者DasKraut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:45:03