fold 是什么
fold 把超过指定宽度的行折断成多行,是 GNU coreutils 里的纯机械折行工具。-s 会尽量在空格处断行,默认按显示列宽计算,所以制表符会先按 tabstop 展开再计入宽度。与 fmt 的区别在于 fmt 会重排自然语言段落的词序并整齐段落,fold 只按位置硬切,不关心词意与语义。
基本信息
| 所属 | GNU coreutils(各发行版默认安装) |
|---|---|
| 语法 | fold [-b] [-s] [-w 宽度] [文件] |
| 默认宽度 | 80 列,按显示列宽计算 |
| 对比工具 | fmt 重排段落文本,fold 只做机械折行 |
典型使用场景
- 日志里出现几万字符的单行,先折行再进编辑器或邮件客户端
- 给不支持横向滚动的终端或老程序喂定宽文本
- 生成固定宽度文本报告,导出给下游老系统解析
- 把长 UUID、长令牌按固定字符数切段方便人工核对
- 跨屏对比两段长文本时统一折成同一宽度
- 给终端里打印的宽表格做兜底折行,避免右侧内容被截断
常用示例
常用示例
fold -w 80 longline.log # 按 80 列硬折行
fold -s -w 76 report.txt # 尽量在空格处断行,保留可读性
fold -b -w 100 noisy.log # -b 按字节数而非显示宽度
fold -w 40 file.txt | nl # 折行后编号,方便核对行数
echo "$longid" | fold -w 8 # 把长串切成 8 字符一段
fold -w 120 wide.csv | head # 宽表格先折再预览,避免终端错行
cat -A file.txt | head # 先确认制表符与空格的真实情况
fold -s -w 72 mail.txt | less # 折行后分页阅读邮件正文常用选项
| 选项 | 作用 | 说明 |
|---|---|---|
| -w N | 指定折行宽度 | 默认 80,按显示列宽计数 |
| -s | 尽量在空格处断行 | 超长单词仍会被硬断 |
| -b | 按字节计数折行 | 中文等多字节内容结果与列宽不同 |
| 无参 | 从标准输入读取 | 管道场景最常用 |
| 多个文件 | 按顺序处理并合并输出 | 与先 cat 再折行等价 |
fold 默认按显示列宽计算,制表符会按当前 tabstop 展开后再算宽度;只关心字节数时(比如按固定长度字段切段)用 -b。处理中文时两种模式切出的位置明显不同,选错模式会得到意外的断点。
fold 会把 URL、Base64、长 token 从中间切断,折行后的文本往往不能再直接解析。对结构化内容做折行前,先把需要的字段提取出来,或者接受折行只是给人看的展示层。
需要「按单词换行、自动补空格让段落整齐」请用 fmt;需要把表格按列对齐请用 column。fold 不补空格也没有词边界判断,一行多长就断在哪里。