删除文档中的 U+200B 零宽度空格字符(Typora显示红点)

本文介绍了一位开发者利用Go语言编写的一个小工具,该工具遍历并移除Markdown文件中的U+200B零宽度空格字符,简化了文件维护。通过exe文件一键操作,提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从网页copy到Typora的内容可能会显示红点,很烦,查看后是U+200B 零宽度空格字符,一个一个删除很麻烦,正好学习下go语言,于是写个程序去除md文件中的U+200B 零宽度空格字符.

打包好的exe在文章结尾。

使用:
放入存放md文件目录下,程序遍历目录以及子目录中md文件,删除md文件中零宽度空格字符

package main
 
import (
    "fmt"
    "os"
    "path/filepath"
	"strings"
	"io/ioutil"
)
 
func main() {
    filepath.Walk(".", walkfunc)
}

func rmu200b(s string) string {
	str := make([]rune, 0, len(s))
	for _, v := range []rune(s) {
		if v == 8203 {
			continue
		}
		str = append(str, v)
	}
	return string(str)
}

func walkfunc(path string, info os.FileInfo, err error) error {
    //fmt.Println(path)

	ok := strings.HasSuffix(path, ".md")
     if ok {
		//fmt.Println(path)
		data, err := ioutil.ReadFile(path)
		if err == nil {
			//fmt.Println(data)
			var filedata = string(data)

			//run := []rune(filedata)
			//fmt.Println(filedata)
			//fmt.Println(run)
			//fmt.Printf("%U\n", run)
			//fmt.Println(data)

			var filedatanew = rmu200b(filedata)
			if len(filedata) != len(filedatanew) {
				fmt.Println(path)
				ioutil.WriteFile(path+"bak",[]byte(filedata),0777)
				ioutil.WriteFile(path,[]byte(filedatanew),0777)
			}
		}
     }

    return nil
}

程序文件下载

<think>嗯,用户想了解如何在Linux下解压ZIP文件的指令。首先,我得确认他们可能已经知道一些基础,但还是要从最常用的命令开始。常用的工具应该是unzip和zip,可能还有7z之类的,不过最常见的是unzip。 记得要提到安装unzip的情况,因为有些Linux发行版可能没有预装这个工具。比如Ubuntu可能需要sudo apt install unzip,而CentOS则是yum或者dnf。需要分点说明安装步骤,不同发行版的命令不同,用户可能不清楚,所以得详细点。 然后是基本的解压命令,unzip filename.zip。这时候得考虑用户是否需要解压到特定目录,所以得介绍-d参数,比如unzip file.zip -d /target/directory。可能用户会遇到覆盖文件的问题,是否需要提示如何处理,比如-n参数跳过已存在的文件,或者-o强制覆盖。 还有列出压缩包内容而不解压的情况,使用-l选项。可能用户想查看里面的文件列表,这个功能挺实用的。另外,如果压缩包有密码保护,得提到-P参数,不过要注意安全性问题,因为密码会显示在历史记录中,可能更安全的方式是在解压时提示输入密码。 另外,有些用户可能习惯用tar命令处理tar.gz文件,但ZIP是另一种格式,需要明确区分。不过可能可以提到用tar来解压ZIP吗?不过tar通常不支持ZIP,所以还是专注在unzip和zip命令上比较好。 还有zip命令的压缩,用户可能不仅想解压,还想知道如何创建ZIP文件,所以可以补充一下zip -r压缩目录的方法。这样用户有完整的压缩和解压知识。 需要注意权限问题,比如解压时需要目标目录的写入权限,或者sudo的使用。还有中文文件名的问题,是否会有编码错误,可能需要提醒用户检查系统编码或者ZIP文件的编码方式。 可能用户遇到的问题,比如解压时提示命令未找到,这时候就要回到安装步骤。或者解压后的文件乱码,可能需要调整字符编码,比如使用-O参数指定编码,比如unzip -O GBK file.zip,不过这个参数可能在某些系统上不可用,比如较新的unzip版本可能移除了这个选项,这时候可能需要其他工具如7z。 所以,总结下来,回答的结构应该是先介绍安装unzip,然后基本解压命令,解压到指定目录,处理覆盖问题,列出内容,密码解压,创建ZIP文件,常见问题处理。每个部分用分点说明,清晰明了。同时注意中文环境下的编码问题,以及可能需要的替代方案,比如使用7z工具。 需要确保命令的语法正确,比如选项的正确使用,路径的写法。比如,-d后面接目录路径,没有空格的话是否正确?应该是unzip file.zip -d directory,这样对吗?是的,正确的用法。还要注意用户可能输入的错误路径,导致解压失败,但可能超出解答范围,只需给出正确指令即可。 另外,可能用户有多个ZIP文件需要批量解压,可以补充说明使用通配符或者循环命令,比如unzip "*.zip",或者结合find命令来处理。不过这可能属于进阶内容,如果用户是初学者,可能暂时不需要,但可以稍微提及,帮助有需要的用户扩展知识。 最后,确保回答用中文,口语化,但结构清晰,步骤明确。避免使用专业术语过多,必要时解释参数的作用,比如-d表示目标目录,-l列出文件等。这样用户能理解每个步骤的意义,而不是单纯复制命令。</think>在Linux系统中解压ZIP文件的常用指令及操作步骤如下: --- ### 一、安装解压工具(如未预装) 大多数Linux发行版已内置`unzip`工具,若未安装可通过以下命令: ```bash # Debian/Ubuntu 系 sudo apt update && sudo apt install unzip # Red Hat/CentOS 系 sudo yum install unzip # 或 sudo dnf install unzip ``` --- ### 二、基础解压指令 #### 1. 解压到当前目录 ```bash unzip 文件名.zip ``` - 示例:`unzip data.zip` *文件将解压到当前所在文件夹* #### 2. 解压到指定目录 ```bash unzip 文件名.zip -d 目标路径/ ``` - 示例:`unzip data.zip -d ~/documents/` *文件将解压到用户主目录下的`documents`文件夹* --- ### 三、常用参数扩展 #### 1. 静默解压(不显示输出信息) ```bash unzip -q 文件名.zip ``` #### 2. 覆盖现有文件 ```bash unzip -o 文件名.zip # 强制覆盖已有文件 unzip -n 文件名.zip # 跳过已存在的文件(不覆盖) ``` #### 3. 仅列出压缩包内容(不解压) ```bash unzip -l 文件名.zip ``` #### 4. 解压加密ZIP文件 ```bash unzip -P 密码 文件名.zip ``` ⚠️ 注意:密码会明文显示在终端历史中,建议安全场景下改用交互式输入。 --- ### 四、压缩文件(补充) 使用`zip`工具创建ZIP压缩包: ```bash # 压缩文件 zip 压缩包名.zip 文件1 文件2 ... # 压缩目录(递归包含子目录) zip -r 压缩包名.zip 目录名/ ``` --- ### 五、常见问题处理 1. **中文乱码**: 若文件名含中文出现乱码,可尝试指定编码(如GBK): ```bash unzip -O GBK 文件名.zip ``` *注:部分系统需安装`unar`工具(`sudo apt install unar`),使用:`unar 文件名.zip`* 2. **批量解压**: 解压当前目录下所有ZIP文件: ```bash unzip "*.zip" ``` --- ### 六、总结流程图 ``` 1. 检查unzip是否安装 → 未安装则通过包管理器安装 2. 使用`unzip 文件名.zip`解压 3. 按需添加参数(-d指定目录、-o覆盖文件等) 4. 特殊需求:加密解压、编码修复、批量操作 ``` 如有其他具体场景(如排除部分文件解压),可进一步补充说明!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敕灵燃骘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值