Linux 命令:fold

概述

Linux 中的 fold 命令是按指定宽度折行显示文本的工具,核心作用是将过长的文本行自动拆分,避免终端或文档中出现横向滚动,常用于格式化日志、配置文件、长文本的输出,是文本排版的实用基础命令。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

一、基本语法

bash 复制代码
fold [选项] [文件1] [文件2] ...

无文件参数时,默认读取标准输入 (可配合管道 | 对其他命令的输出做折行处理)。

二、核心功能与默认行为

  1. 默认按每行80个字符折行(适配传统终端的宽度);
  2. 折行仅按字符数 拆分,不会识别单词边界(可能将一个单词从中间拆开);
  3. 拆分后的行保留原文本的字符顺序,多文件会按顺序拼接折行。
简单示例

新建一个长文本文件 longline.txt,内容为一行超长字符串:

复制代码
Linux fold command is used to wrap long lines of text into specified width, it's a basic text formatting tool.

执行默认折行命令:

bash 复制代码
fold longline.txt

输出会被拆分为多行(每行最多80字符),若原行不足80字符则保持原样。

三、常用选项(重点)

fold 的选项主要用于自定义折行宽度、是否识别字节/空格,高频选项均为单字符,可组合使用:

选项 英文全称 作用 实用场景
-w N --width=N 指定折行宽度为N个字符(核心选项) 适配窄终端、固定文档排版宽度
-b --bytes 字节数折行,而非字符数 处理含中文/多字节字符的文本(避免乱码)
-s --spaces 空格折行(不拆分单词) 格式化英文文本、日志,保证单词完整性
-n ------ 部分系统(如BSD)中替代-b,按字节折行 跨系统兼容场景

四、经典实用示例

覆盖日常最常用的折行场景,含纯英文、多字节中文、管道配合、单词防拆分等核心用法。

场景1:自定义折行宽度(最常用)

将长文本按每行30个字符折行,替代默认80字符:

bash 复制代码
fold -w 30 longline.txt
场景2:处理中文/多字节文本(避免乱码)

中文属于多字节字符 (UTF-8下占3字节),默认按字符折行可能因"字符-字节"不匹配导致乱码,需用-b按字节折行:

新建含中文的长行文件 cn_longline.txt

复制代码
fold命令是Linux的文本折行工具,可将超长的文本行按指定宽度拆分,适合格式化日志和配置文件。

执行按字节折行(指定每行20字节,适配窄终端):

bash 复制代码
fold -b -w 20 cn_longline.txt
场景3:折行不拆分单词(英文文本专属)

-s选项让fold最近的空格处折行,保证单词完整性,避免"断词":

bash 复制代码
# 按40字符折行,且遇空格拆分(不拆单词)
fold -s -w 40 longline.txt

输出示例(单词完整,行宽不超40):

复制代码
Linux fold command is used to wrap long lines of
text into specified width, it's a basic text
formatting tool.
场景4:配合管道处理其他命令输出

catgrepls -l等命令的超长输出做折行,比如查看目录下超长文件名的列表并折行:

bash 复制代码
# 列出当前目录所有文件,按50字符折行,避免横向滚动
ls -l | fold -w 50
场景5:多文件批量折行并输出到新文件

file1.txtfile2.txt按35字符折行,结果写入formatted.txt

bash 复制代码
fold -w 35 file1.txt file2.txt > formatted.txt

五、关键注意事项

  1. 多字节字符处理 :UTF-8编码下,中文、表情、特殊符号均为多字节,必须加-b按字节折行,否则会出现字符截断、乱码;
  2. -s的局限性 :仅在有空格时生效,若一行无任何空格(如纯数字/密文),仍会按字符数直接拆分;
  3. 折行不修改原文件fold仅格式化输出 ,不会改变原文件内容,需通过重定向>写入新文件才会保存折行结果;
  4. fmt命令的区别fold纯按长度硬拆分 ,无文本排版逻辑;fmt智能格式化(自动调整行宽、保留段落、对齐单词),适合更美观的文本排版。

六、与同类命令fmt的核心区别

二者均为文本折行工具,但定位和功能差异明显,按需选择:

命令 折行逻辑 单词处理 多字节字符 适用场景
fold 按字符/字节数硬拆分 默认拆分,-s可避拆 需加-b防乱码 快速格式化、日志/密文折行、管道临时输出
fmt 智能调整行宽,保留段落 自动避拆单词 原生支持,无需额外选项 英文文档、文章、配置文件的美观排版

示例 :用fmt格式化同一份长文本(自动按75字符折行,保留单词):

bash 复制代码
fmt -w 75 longline.txt

总结

fold轻量、快速的文本折行工具,核心优势是简单、高效,无多余排版逻辑,日常使用的高频组合:

  1. 英文短文本快速折行:fold -w N 文件名
  2. 中文/多字节文本折行:fold -b -w N 文件名
  3. 英文文本防断词折行:fold -s -w N 文件名
  4. 命令输出临时折行:命令 | fold -w N
相关推荐
A小辣椒18 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式