xargs 用 -n 选项将单行文本按指定个数分组换行,配合 -d 可处理非空格分隔符;默认归一化空白字符,适合先清理再分组,常与 ls、find 等命令组合实现每行固定字段数输出。

用 xargs 把单行文本转成多行输出,核心是用 -n 选项控制每行输出的参数个数。
指定每行显示几个字段(-n)
当输入是一整行、用空格分隔的多个字段时,xargs -n N 会把它们按每 N 个一组切分,每组占一行:
-
echo "a b c d e f" | xargs -n 2→ 输出两列一行:
a b<br>c d<br>e f
-
echo "1 2 3 4 5 6 7" | xargs -n 3→ 每行最多 3 个数字:
1 2 3<br>4 5 6<br>7
处理非空格分隔的文本(-d)
如果单行里用的是其他分隔符(比如冒号、逗号、竖线),需先用 -d 指定定界符,再配合 -n 切分:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
echo "apple:banana:cherry:date:elderberry" | xargs -d : -n 2
→ 每行两个水果,以冒号为界:
apple banana<br>cherry date<br>elderberry
-
echo "one,two,three,four,five" | xargs -d , -n 2
→ 用逗号分隔,每行两个词
注意换行与空格的转换逻辑
xargs 默认把所有空白(包括换行、制表符、多个空格)统一压缩成单个空格,再按空格切分。所以它天然适合“先归一化、再分组”的场景:
- 原始含换行的文本:
printf "a\nb\nc\nd\ne\nf" | xargs先变成a b c d e f,再用-n分行 - 若原始就是单行但含多余空格,
xargs会自动清理,无需额外用tr或sed
实用组合:配合其他命令生成单行再拆分
常见做法是先用 find、ls 或 cat 输出成一行,再用 xargs -n 控制格式:
- 列出当前目录下文件名,每行显示 4 个:
ls | xargs -n 4 - 查出所有 .log 文件路径,每行 3 个路径:
find . -name "*.log" | xargs -n 3

















