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

如何用sed/awk将Markdown中斜体文件名改为反引号包裹格式

批量修改Markdown文件中斜体文件名的命令方案

一、核心sed命令(单目录处理)

使用sed工具可高效完成批量替换,命令如下:

sed -i.bak -E 's/\*([^*]*)([[:alnum:]_-]+(\.[[:alnum:]_-]+)+)\*/\*\1`\2`\*/g' *.md

命令说明:

  • -i.bak:原地修改.md文件,同时自动生成.md.bak备份文件,避免误操作丢失原内容
  • -E:启用扩展正则表达式,简化分组写法
  • 匹配规则:
    • \*:匹配斜体开头的星号(正则中*是特殊字符,需转义)
    • ([^*]*):捕获斜体内文件名前的所有非星号内容(包括空格、普通文本)
    • ([[:alnum:]_-]+(\.[[:alnum:]_-]+)+):捕获带扩展名的文件名,支持多句点格式(如this.four.word.file.amp),允许文件名包含字母、数字、下划线、连字符
  • 替换规则:\*\1\2\*:保留原斜体的星号和文件名前的文本,将捕获到的文件名用反引号包裹

二、递归处理子目录中的.md文件

如果需要处理当前目录及所有子目录下的.md文件,结合find命令:

find . -type f -name "*.md" -exec sed -i.bak -E 's/\*([^*]*)([[:alnum:]_-]+(\.[[:alnum:]_-]+)+)\*/\*\1`\2`\*/g' {} +

三、测试与验证

修改前建议先预览替换效果,避免直接修改文件:

sed -E 's/\*([^*]*)([[:alnum:]_-]+(\.[[:alnum:]_-]+)+)\*/\*\1`\2`\*/g' 目标文件名.md

确认输出符合预期后,再使用带-i.bak的命令执行修改。

四、清理备份文件

确认修改无误后,可删除自动生成的备份文件:

  • 单目录:rm *.md.bak
  • 递归清理:find . -name "*.md.bak" -delete

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:33:17